/// <summary> /// Provides a basic console selection for either scraping or comparing /// </summary> /// <param name="args"></param> /// <returns></returns> public async Task Run(string[] args) { if (_config.RunScheduled) { await RunScheduled().ConfigureAwait(false); Environment.Exit(0); } // Start Ui Console.WriteLine(""); Console.WriteLine("Welcome to the one and only truly amazing .NET Core Web scraping monitoring tool..."); Console.WriteLine("Please return to proceed..."); Console.ReadLine(); var option = ""; while (option != "1" && option != "2") { Console.Clear(); Console.WriteLine(""); Console.WriteLine("Please select your option..."); Console.WriteLine("1. Start new web scrape"); Console.WriteLine("2. Start web comparison"); Console.WriteLine(""); Console.WriteLine("Q. To exit this beautiful tool"); option = Console.ReadLine(); if (option == "q") { break; } } if (option == "1") { var(result, count) = await _scraper.StartScrape().ConfigureAwait(false); if (result) { Console.Clear(); Console.WriteLine(""); Console.WriteLine("Web scrape completed successfully!"); Console.WriteLine($"{count} Url parsed successfully!"); Console.WriteLine(""); Console.WriteLine("Please return to proceed..."); Console.ReadLine(); if (_config.SendOutputEmails) { if (_config.ConsoleLogging) { Console.WriteLine(""); Console.WriteLine("Sending successful web scrape email..."); } var subject = $"Web scrape of {_config.RootUrl} completed successfully!"; await SendEmail(subject, new ComparisonModel(), count).ConfigureAwait(false); } } else { Console.WriteLine(""); Console.WriteLine("Unable to complete web scrape successfully!"); Console.WriteLine("Please ensure appsettings.json is configured correctly!"); Console.WriteLine("Please return to exit..."); Console.ReadLine(); } } if (option == "2") { Console.Clear(); Console.WriteLine(""); Console.WriteLine("Please type the first of folder names you wish to compare..."); var FolderOne = Console.ReadLine(); while (!Directory.Exists($"{_config.FilePath}\\{FolderOne}")) { Console.Clear(); Console.WriteLine(""); Console.WriteLine("Please type the name again..."); FolderOne = Console.ReadLine(); } Console.Clear(); Console.WriteLine(""); Console.WriteLine("Please type the second of folder names you wish to compare..."); var FolderTwo = Console.ReadLine(); while (!Directory.Exists($"{_config.FilePath}\\{FolderTwo}")) { Console.Clear(); Console.WriteLine(""); Console.WriteLine("Please type the name again..."); FolderTwo = Console.ReadLine(); } Console.Clear(); Console.WriteLine(""); Console.WriteLine("Two folders have been selected..."); Console.WriteLine("Please press return to begin comparison..."); Console.ReadLine(); Console.Clear(); Console.WriteLine(""); Console.WriteLine("Beginning folder comparison..."); Console.WriteLine(""); var comparison = _compare.StartCompare($"{_config.FilePath}\\{FolderOne}", $"{_config.FilePath}\\{FolderTwo}"); if (comparison.IsComparisonComplete) { if (_config.SendOutputEmails) { if (_config.ConsoleLogging) { Console.WriteLine(""); Console.WriteLine("Sending successful comparison email..."); } var subject = "Web scraper has completed comparison"; await SendEmail(subject, comparison, 0).ConfigureAwait(false); } } else { Console.WriteLine(""); Console.WriteLine("Unable to complete comparison successfully!"); Console.WriteLine("Please ensure appsettings.json is configured correctly!"); Console.WriteLine("Please return to exit..."); Console.ReadLine(); } Environment.Exit(0); } }