Ejemplo n.º 1
0
        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();
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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();
                    }
                }
            }
        }
Ejemplo n.º 3
0
        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
            {
                //Instantiate scan job
                ModernizationScanJob job = new ModernizationScanJob(options)
                {
                    // I'm debugging
                    //UseThreading = false
                };

                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);
                    }
                }
            }
        }