private static async Task Main(string[] args) { // setup the config with defaults ScraperConfig config = new ScraperConfig() { PageSize = _defaultPageSize, RunOnlyOnePage = _defaultRunOnlyOnePage, SaveCandidatePacks = _defaultSaveCandidatePacks, IncludePreviewPacks = _defaultIncludePreviewPacks }; if (!TryParseArgs(args, config) || string.IsNullOrEmpty(config.BasePath)) { // base path is the only required arg. ShowUsageMessage(); return; } PackSourceChecker packSourceChecker; // if or when we add other sources to scrape, input args can control which execute(s). if (true) { if (!NugetPackScraper.TryCreateDefaultNugetPackScraper(config, out packSourceChecker)) { Console.WriteLine("Unable to create the NugetPackScraper."); return; } } else { throw new NotImplementedException("no checker for the input options"); } PackSourceCheckResult checkResults = await packSourceChecker.CheckPackagesAsync().ConfigureAwait(false); PackCheckResultReportWriter.TryWriteResults(config.BasePath, checkResults); }
private static async Task <int> ExecuteAsync(CommandArgs config) { Verbose.IsEnabled = config.Verbose; var cts = new CancellationTokenSource(); Console.CancelKeyPress += (s, e) => { Console.WriteLine("Canceling..."); cts.Cancel(); e.Cancel = true; }; try { IPackCheckerFactory factory = config.LocalPackagePath == null ? new NuGetPackSourceCheckerFactory() : new TestPackCheckerFactory(); PackSourceChecker packSourceChecker = await factory.CreatePackSourceCheckerAsync(config, cts.Token).ConfigureAwait(false); PackSourceCheckResult checkResults = await packSourceChecker.CheckPackagesAsync(cts.Token).ConfigureAwait(false); (string metadataPath, string legacyMetadataPath) = PackCheckResultReportWriter.WriteResults(config.OutputPath, checkResults); if (config.TestEnabled) { CacheFileTests.RunTests(config, metadataPath, legacyMetadataPath); } return(0); } catch (TaskCanceledException) { Console.WriteLine("Operation was cancelled."); return(2); } catch (Exception e) { Console.WriteLine($"Error occured: {e}"); return(1); } }