static void Main(string[] args) { var options = new Options(); // Show wizard to help the user with filling the needed scan configuration if (args.Length == 0) { Console.WriteLine("Launching wizard..."); var wizard = new Forms.Wizard(options); wizard.ShowDialog(); if (string.IsNullOrEmpty(options.User) && string.IsNullOrEmpty(options.ClientID) && string.IsNullOrEmpty(options.AccessToken)) { // Trigger validation which will show usage information options.ValidateOptions(args); } } else { // Validate commandline options options.ValidateOptions(args); } if (options.ExportPaths != null && options.ExportPaths.Count > 0) { List <ReportStream> reportStreams = new List <ReportStream>(); Generator generator = new Generator(); // populate memory streams for the consolidated groupify report foreach (var path in options.ExportPaths) { LoadCSVFile(reportStreams, path, Generator.GroupifyCSV); LoadCSVFile(reportStreams, path, Generator.ScannerSummaryCSV); } // create report var groupifyReport = generator.CreateGroupifyReport(reportStreams); PersistStream($".\\{Generator.GroupifyReport}", groupifyReport); // free memory ClearReportStreams(reportStreams); // populate memory streams for the consolidated list report foreach (var path in options.ExportPaths) { LoadCSVFile(reportStreams, path, Generator.ListCSV); LoadCSVFile(reportStreams, path, Generator.ScannerSummaryCSV); } // create report var listReport = generator.CreateListReport(reportStreams); PersistStream($".\\{Generator.ListReport}", listReport); // free memory ClearReportStreams(reportStreams); // populate memory streams for the consolidated page report foreach (var path in options.ExportPaths) { LoadCSVFile(reportStreams, path, Generator.PageCSV); LoadCSVFile(reportStreams, path, Generator.ScannerSummaryCSV); } // create report var pageReport = generator.CreatePageReport(reportStreams); PersistStream($".\\{Generator.PageReport}", pageReport); // free memory ClearReportStreams(reportStreams); // populate memory streams for the consolidated publishing report foreach (var path in options.ExportPaths) { LoadCSVFile(reportStreams, path, Generator.PublishingSiteCSV); LoadCSVFile(reportStreams, path, Generator.PublishingWebCSV); LoadCSVFile(reportStreams, path, Generator.PublishingPageCSV); LoadCSVFile(reportStreams, path, Generator.ScannerSummaryCSV); } // create report var publishingReport = generator.CreatePublishingReport(reportStreams); PersistStream($".\\{Generator.PublishingReport}", publishingReport); // free memory ClearReportStreams(reportStreams); // populate memory streams for the consolidated workflow report foreach (var path in options.ExportPaths) { LoadCSVFile(reportStreams, path, Generator.WorkflowCSV); LoadCSVFile(reportStreams, path, Generator.ScannerSummaryCSV); } // create report var workflowReport = generator.CreateWorkflowReport(reportStreams); PersistStream($".\\{Generator.WorkflowReport}", workflowReport); // free memory ClearReportStreams(reportStreams); // populate memory streams for the consolidated InfoPath report foreach (var path in options.ExportPaths) { LoadCSVFile(reportStreams, path, Generator.InfoPathCSV); LoadCSVFile(reportStreams, path, Generator.ScannerSummaryCSV); } // create report var infoPathReport = generator.CreateInfoPathReport(reportStreams); PersistStream($".\\{Generator.InfoPathReport}", infoPathReport); // free memory ClearReportStreams(reportStreams); // populate memory streams for the consolidated blog report foreach (var path in options.ExportPaths) { LoadCSVFile(reportStreams, path, Generator.BlogWebCSV); LoadCSVFile(reportStreams, path, Generator.BlogPageCSV); LoadCSVFile(reportStreams, path, Generator.ScannerSummaryCSV); } // create report var blogReport = generator.CreateBlogReport(reportStreams); PersistStream($".\\{Generator.BlogReport}", blogReport); // free memory ClearReportStreams(reportStreams); } else { try { DateTime scanStartDateTime = DateTime.Now; // let's catch unhandled exceptions AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; string workingFolder = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), DateTime.Now.Ticks.ToString()); //Instantiate scan job ModernizationScanJob job = new ModernizationScanJob(options, null, null) { // I'm debugging //UseThreading = false }; job.Logger += Job_Logger; scannerTelemetry = job.ScannerTelemetry; job.Execute(); // Persist the CSV file streams Directory.CreateDirectory(workingFolder); foreach (var csvStream in job.GeneratedFileStreams) { // Move pointer to start csvStream.Value.Position = 0; string outputfile = $"{workingFolder}\\{csvStream.Key}"; Console.WriteLine("Outputting scan results to {0}", outputfile); using (var fileStream = File.Create(outputfile)) { CopyStream(csvStream.Value, fileStream); if (options.SkipReport) { // Close and dispose the stream when we're not generating reports csvStream.Value.Dispose(); } else { csvStream.Value.Position = 0; } } } // Create reports if (!options.SkipReport) { List <ReportStream> reportStreams = new List <ReportStream>(); foreach (var csvStream in job.GeneratedFileStreams) { reportStreams.Add(new ReportStream() { Name = csvStream.Key, Source = workingFolder, DataStream = csvStream.Value, }); } List <string> paths = new List <string> { workingFolder }; var generator = new Generator(); var groupifyReport = generator.CreateGroupifyReport(reportStreams); PersistStream($"{workingFolder}\\{Generator.GroupifyReport}", groupifyReport); if (Options.IncludeLists(options.Mode)) { var listReport = generator.CreateListReport(reportStreams); PersistStream($"{workingFolder}\\{Generator.ListReport}", listReport); } if (Options.IncludePage(options.Mode)) { var pageReport = generator.CreatePageReport(reportStreams); PersistStream($"{workingFolder}\\{Generator.PageReport}", pageReport); } if (Options.IncludePublishing(options.Mode)) { var publishingReport = generator.CreatePublishingReport(reportStreams); PersistStream($"{workingFolder}\\{Generator.PublishingReport}", publishingReport); } if (Options.IncludeWorkflow(options.Mode)) { var workflowReport = generator.CreateWorkflowReport(reportStreams); PersistStream($"{workingFolder}\\{Generator.WorkflowReport}", workflowReport); } if (Options.IncludeInfoPath(options.Mode)) { var infoPathReport = generator.CreateInfoPathReport(reportStreams); PersistStream($"{workingFolder}\\{Generator.InfoPathReport}", infoPathReport); } if (Options.IncludeBlog(options.Mode)) { var blogReport = generator.CreateBlogReport(reportStreams); PersistStream($"{workingFolder}\\{Generator.BlogReport}", blogReport); } // Dispose streams foreach (var csvStream in job.GeneratedFileStreams) { csvStream.Value.Dispose(); } } TimeSpan duration = DateTime.Now.Subtract(scanStartDateTime); if (scannerTelemetry != null) { scannerTelemetry.LogScanDone(duration); } } finally { if (scannerTelemetry != null) { scannerTelemetry.Flush(); } } } }
static void Main(string[] args) { var options = new Options(); // Show wizard to help the user with filling the needed scan configuration if (args.Length == 0) { var wizard = new Forms.Wizard(options); wizard.ShowDialog(); if (string.IsNullOrEmpty(options.User) && string.IsNullOrEmpty(options.ClientID)) { // Trigger validation which will show usage information options.ValidateOptions(args); } } else { // Validate commandline options options.ValidateOptions(args); } if (options.ExportPaths != null && options.ExportPaths.Count > 0) { Generator generator = new Generator(); generator.CreateGroupifyReport(options.ExportPaths); generator.CreateListReport(options.ExportPaths); generator.CreatePageReport(options.ExportPaths); generator.CreatePublishingReport(options.ExportPaths); } else { try { DateTime scanStartDateTime = DateTime.Now; // let's catch unhandled exceptions AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; //Instantiate scan job ModernizationScanJob job = new ModernizationScanJob(options) { // I'm debugging //UseThreading = false }; scannerTelemetry = job.ScannerTelemetry; job.Execute(); // Create reports if (!options.SkipReport) { string workingFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); List <string> paths = new List <string> { Path.Combine(workingFolder, job.OutputFolder) }; var generator = new Generator(); generator.CreateGroupifyReport(paths); if (Options.IncludeLists(options.Mode)) { generator.CreateListReport(paths); } if (Options.IncludePage(options.Mode)) { generator.CreatePageReport(paths); } if (Options.IncludePublishing(options.Mode)) { generator.CreatePublishingReport(paths); } } TimeSpan duration = DateTime.Now.Subtract(scanStartDateTime); if (scannerTelemetry != null) { scannerTelemetry.LogScanDone(duration); } } finally { if (scannerTelemetry != null) { scannerTelemetry.Flush(); } } } }