private static async Task RunGeneratorAsync() { try { var version = await RetrieveRmVersion(); if (options.TemplateStage == null) { var releaseTemplateRepo = new RMReleaseTemplateRepository(options.ConnectionString, version); var stages = await releaseTemplateRepo.GetReleaseTemplateStages(options.TemplateName); if (!stages.Any()) { throw new ArgumentException($@"The release template ""{options.TemplateName}"" has no stages. Check that the release template name is spelled correctly.", nameof(options.TemplateName)); } foreach (var stage in stages) { await RetrieveWorkflowAndGenerateScript(version, options.TemplateName, stage); } } else { await RetrieveWorkflowAndGenerateScript(version, options.TemplateName, options.TemplateStage); } } catch (AggregateException ae) { ae.Handle(x => { if (x is SqlException) // This we know how to handle. { Console.WriteLine($"{Environment.NewLine}Cannot connect to the DB '{0}' on the SQL server '{1}'{Environment.NewLine}", options.DatabaseName, options.SqlServerName); return(true); } Console.WriteLine($"{Environment.NewLine}Unexpected error in processing '{0}'{Environment.NewLine}", x.Message); return(false); }); } // ReSharper disable once CatchAllClause catch (Exception ex) { // final global catch Console.WriteLine("A critical error occurred:"); Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } }
private static async Task <RMDeploymentSequence> RetrieveWorkflow(RMVersion version) { var repository = new RMReleaseTemplateRepository( options.ConnectionString, options.TemplateName, options.TemplateStage, version); PrintOnlyIfVerbose($"{Environment.NewLine}Connecting to the DB '{options.DatabaseName}' on the SQL server '{options.SqlServerName}'"); // get the workflow var workflow = await repository.GetDeploymentSequence(); return(workflow); }
private static async Task<RMDeploymentSequence> RetrieveWorkflow(RMVersion version) { var repository = new RMReleaseTemplateRepository( options.ConnectionString, options.TemplateName, options.TemplateStage, version); PrintOnlyIfVerbose($"{Environment.NewLine}Connecting to the DB '{options.DatabaseName}' on the SQL server '{options.SqlServerName}'"); // get the workflow var workflow = await repository.GetDeploymentSequence(); return workflow; }