public async Task <int> OnExecuteAsync() { var loggerFactory = CreateLoggerFactory(); var logger = loggerFactory.CreateLogger <StatusCommand>(); if (string.IsNullOrEmpty(OutputFile)) { OutputFile = Path.Combine(Directory.GetCurrentDirectory(), "docs", "index.html"); } logger.LogInformation("Preparing index page report"); var data = await LoadDataStoreAsync(); var reports = ReportStore.Create(ReportsDirectory, TemplatesDirectory); logger.LogInformation("Computing new report model."); var model = await Reports.Index.GenerateReportModelAsync(reports, data); // Save the report var report = await reports.RenderReportAsync("HomePage.html", model); await File.WriteAllTextAsync(OutputFile, report); return(0); }
public async Task <int> OnExecuteAsync() { var loggerFactory = CreateLoggerFactory(); var logger = loggerFactory.CreateLogger <StatusCommand>(); var endDate = EndDate ?? DateTime.Now; var startDate = StartDate ?? (endDate.AddDays(-7)); // Normalize dates to midnight endDate = new DateTime(endDate.Year, endDate.Month, endDate.Day, 0, 0, 0); startDate = new DateTime(startDate.Year, startDate.Month, startDate.Day, 0, 0, 0); if (string.IsNullOrEmpty(Team)) { throw new CommandLineException("Missing required option '--team'."); } if (string.IsNullOrEmpty(Milestone)) { throw new CommandLineException("Missing required option '--milestone'."); } if (string.IsNullOrEmpty(ReportName)) { ReportName = $"status/{Team}/{endDate:yyyy-MM-dd}"; } logger.LogInformation("Preparing report: {ReportName}", ReportName); var data = await LoadDataStoreAsync(); var github = GetGitHubClient(); var reports = ReportStore.Create(ReportsDirectory, TemplatesDirectory); // Load up the team if (!data.Teams.TryGetValue(Team, out var team)) { throw new CommandLineException($"Unknown team '{Team}'."); } StatusReportModel model; if (RegenerateFromModel) { logger.LogInformation("Using existing model to regenerate report."); model = await reports.LoadReportModelAsync <StatusReportModel>(ReportName); } else { logger.LogInformation("Computing new report model."); model = await StatusReport.GenerateReportModelAsync(github, data, team, Milestone, startDate, endDate, loggerFactory); } // Save the report and model await reports.SaveReportAsync(ReportName, "index.html", "StatusReport.html", model); return(0); }