public static void Generate(string downloadBranch, params string[] folders) { var spec = CreateRestApiSpecModel(downloadBranch, folders); var actions = new Dictionary<Action<RestApiSpec>, string> { { GenerateClientInterface, "Client interface" }, { GenerateRequestParameters, "Request parameters" }, { GenerateRequestParametersExtensions, "Request parameters override" }, { GenerateDescriptors, "Descriptors" }, { GenerateRequests, "Requests" }, { GenerateEnums, "Enums" }, { GenerateRawClient, "Lowlevel client" }, { GenerateRawDispatch, "Dispatch" }, }; using (var pbar = new ProgressBar(actions.Count, "Generating code", new ProgressBarOptions { BackgroundColor = ConsoleColor.DarkGray })) { foreach(var kv in actions) { pbar.UpdateMessage("Generating " + kv.Value); kv.Key(spec); pbar.Tick("Generated " + kv.Value); } } }
private RestSpecDownloader(string branch) { var specifications = (from kv in OnlineSpecifications let url = kv.Value.Replace("{version}", branch) select new Specification { FolderOnDisk = kv.Key, Branch = branch, GithubListingUrl = url }).ToList(); using (var pbar = new ProgressBar(specifications.Count, "Downloading specifications", MainProgressBarOptions)) { foreach (var spec in specifications) { pbar.UpdateMessage($"Downloading rest-api-spec to {spec.FolderOnDisk} for branch {branch}"); DownloadJsonDefinitions(spec, pbar); pbar.Tick($"Downloaded rest-api-spec to {spec.FolderOnDisk} for branch {branch}"); } } File.WriteAllText(CodeConfiguration.LastDownloadedVersionFile, branch); }