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;
        }
Esempio n. 3
0
        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);
        }