Example #1
0
        public async Task RunAsync(AppSettings settings)
        {
            // Let 'em know we're starting.
            logger.LogDebug("Run! Project: {Path}", settings.ProjectFilePath);

            var timer = Stopwatch.StartNew();

            // Parse the project file to get a model of the project
            var projectModel = await projectParser.ParseAsync(settings.ProjectFilePath);

            // Build a dependency graph from the project model
            var work = projectPlanner.CreateWork(projectModel, settings);

            // Execute the dependency graph to get a data project
            var dataProject = await work.RunAsync();

            // Create the list of report tasks from the project model
            var reports = reportPlanner.CreateWork(dataProject, settings);

            // Generate all the desired reports
            await Task.WhenAll(reports.Select(x => x.RunAsync()));

            // All done!
            logger.LogDebug("Done.");
            logger.LogDebug("Elapsed time: {Time}", timer.Elapsed.ToString(@"hh\:mm\:ss\.fff"));
        }