public static string GetShaFileContent(CliEntry cliEntry, string cliVersion, string filePath, bool isMinified = false) { string rid = GetRuntimeIdentifier(isMinified, cliEntry.OperatingSystem ?? cliEntry.OS, cliEntry.Architecture); string fileName = $"Azure.Functions.Cli.{rid}.{cliVersion}.zip.sha2"; string path = Path.Combine(filePath, fileName); return File.ReadAllText(path); }
public static string GetDownloadLink(CliEntry cliEntry, string cliVersion, bool isMinified = false) { string rid = string.Empty; if (isMinified) { rid = "min."; } rid += GetRuntimeIdentifier(false, cliEntry.OperatingSystem ?? cliEntry.OS, cliEntry.Architecture); var url = $"https://functionscdn.azureedge.net/public/{cliVersion}/Azure.Functions.Cli.{rid}.{cliVersion}.zip"; // bypassing validation for now //if (!IsValidDownloadLink(url)) //{ // throw new Exception($"{url} is not valid or no found. Cannot generate cli feed file"); //} return url; }
static void Main(string[] args) { string cliVersion = GetCliVersion(args[0]); Console.WriteLine($"Preparing CLI feed for version:{cliVersion}"); string coreToolsArtifactsDirectory = args[0]; var currentFeed = Helper.HttpClient.GetStringAsync(_feedUrl).Result; var currentFeedJson = JObject.Parse(currentFeed); var targetFeedJson = JObject.Parse(currentFeed); string releaseVersion = Helper.GetReleaseVersionFromTag(currentFeedJson, tag: "v2"); var releaseJson = currentFeedJson["releases"][releaseVersion]; var feedEntry = releaseJson.ToObject <FeedEntry>(); var feedReleaseVersion = Helper.GetReleaseVersion(currentFeedJson["releases"]); // Update the standalone entries var updatedCliEntry = UpdateStandaloneCli(feedEntry, coreToolsArtifactsDirectory, cliVersion); var cliEtnry = new CliEntry { OS = "windows", Architecture = "x86" }; releaseJson["cli"] = Helper.GetDownloadLink(cliEtnry, cliVersion, isMinified: true); releaseJson["sha2"] = Helper.GetShaFileContent(cliEtnry, cliVersion, coreToolsArtifactsDirectory, isMinified: true); releaseJson["standaloneCli"] = JArray.FromObject(updatedCliEntry); releaseJson["itemTemplates"] = Helper.GetTemplateUrl("Microsoft.Azure.WebJobs.ItemTemplates"); releaseJson["projectTemplates"] = Helper.GetTemplateUrl("Microsoft.Azure.WebJobs.ProjectTemplates"); var targetFeedReleases = targetFeedJson["releases"]; ((JObject)targetFeedReleases).Add(feedReleaseVersion, releaseJson); targetFeedJson["tags"]["v2-prerelease"]["release"] = feedReleaseVersion; string path = Path.Combine(coreToolsArtifactsDirectory, "cli-feed-v3.json"); string feedString = JsonConvert.SerializeObject(targetFeedJson, Formatting.Indented); Console.WriteLine("Writing File\n" + feedString); File.WriteAllText(path, feedString); }