public static bool TryCreateDefaultNugetPackScraper(ScraperConfig config, out PackSourceChecker packSourceChecker) { NugetPackProvider packProvider = new NugetPackProvider(config.BasePath, config.PageSize, config.RunOnlyOnePage, config.IncludePreviewPacks); List <Func <IInstalledPackInfo, PreFilterResult> > preFilterList = new List <Func <IInstalledPackInfo, PreFilterResult> >(); if (!PreviouslyRejectedPackFilter.TryGetPreviouslySkippedPacks(config.PreviousRunBasePath, out HashSet <string> nonTemplatePacks)) { Console.WriteLine("Unable to read results from the previous run."); packSourceChecker = null; return(false); } preFilterList.Add(PreviouslyRejectedPackFilter.SetupPackFilter(nonTemplatePacks)); if (!config.DontFilterOnTemplateJson) { preFilterList.Add(TemplateJsonExistencePackFilter.SetupPackFilter()); } preFilterList.Add(SkipTemplatePacksFilter.SetupPackFilter()); PackPreFilterer preFilterer = new PackPreFilterer(preFilterList); IReadOnlyList <IAdditionalDataProducer> additionalDataProducers = new List <IAdditionalDataProducer>() { new CliHostDataProducer() }; packSourceChecker = new PackSourceChecker(packProvider, preFilterer, additionalDataProducers, config.SaveCandidatePacks); return(true); }
public static bool TryCreateDefaultNugetPackScraper(ScraperConfig config, out PackSourceChecker packSourceChecker) { List <IPackProvider> providers = new List <IPackProvider>(); if (!config.Providers.Any()) { providers.AddRange(SupportedProviders.Select(kvp => new NugetPackProvider(kvp.Key, kvp.Value, config.BasePath, config.PageSize, config.RunOnlyOnePage, config.IncludePreviewPacks))); } else { foreach (string provider in config.Providers.Distinct(StringComparer.OrdinalIgnoreCase)) { providers.Add(new NugetPackProvider(provider, SupportedProviders[provider], config.BasePath, config.PageSize, config.RunOnlyOnePage, config.IncludePreviewPacks)); } } List <Func <IDownloadedPackInfo, PreFilterResult> > preFilterList = new List <Func <IDownloadedPackInfo, PreFilterResult> >(); if (!PreviouslyRejectedPackFilter.TryGetPreviouslySkippedPacks(config.PreviousRunBasePath, out HashSet <string> nonTemplatePacks)) { Console.WriteLine("Unable to read results from the previous run."); packSourceChecker = null; return(false); } preFilterList.Add(PreviouslyRejectedPackFilter.SetupPackFilter(nonTemplatePacks)); if (!config.DontFilterOnTemplateJson) { preFilterList.Add(TemplateJsonExistencePackFilter.SetupPackFilter()); } preFilterList.Add(SkipTemplatePacksFilter.SetupPackFilter()); PackPreFilterer preFilterer = new PackPreFilterer(preFilterList); IReadOnlyList <IAdditionalDataProducer> additionalDataProducers = new List <IAdditionalDataProducer>() { new CliHostDataProducer() }; packSourceChecker = new PackSourceChecker(providers, preFilterer, additionalDataProducers, config.SaveCandidatePacks); return(true); }
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); } }