Пример #1
0
        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);
        }
Пример #2
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);
        }