From 61f05f1b2e6591fcaf3e3504d8395309104239f6 Mon Sep 17 00:00:00 2001 From: Oleg Shevchenko Date: Sun, 11 Dec 2022 19:53:03 +0300 Subject: [PATCH] Add excluded parameter (#25) * Add ability to exclude packages --- src/.idea/.idea.DotNet.Consolidate/.idea/.gitignore | 13 +++++++++++++ src/.idea/.idea.DotNet.Consolidate/.idea/.name | 1 + .../.idea.DotNet.Consolidate/.idea/encodings.xml | 4 ++++ .../.idea.DotNet.Consolidate/.idea/indexLayout.xml | 8 ++++++++ src/.idea/.idea.DotNet.Consolidate/.idea/misc.xml | 6 ++++++ src/.idea/.idea.DotNet.Consolidate/.idea/vcs.xml | 6 ++++++ src/DotNet.Consolidate/DotNet.Consolidate.csproj | 2 +- src/DotNet.Consolidate/Models/Options.cs | 10 +++++++--- src/DotNet.Consolidate/Program.cs | 12 ++++++++++-- src/DotNet.Consolidate/Services/PackagesAnalyzer.cs | 5 +++++ .../Services/SolutionInfoProvider.cs | 1 + 11 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 src/.idea/.idea.DotNet.Consolidate/.idea/.gitignore create mode 100644 src/.idea/.idea.DotNet.Consolidate/.idea/.name create mode 100644 src/.idea/.idea.DotNet.Consolidate/.idea/encodings.xml create mode 100644 src/.idea/.idea.DotNet.Consolidate/.idea/indexLayout.xml create mode 100644 src/.idea/.idea.DotNet.Consolidate/.idea/misc.xml create mode 100644 src/.idea/.idea.DotNet.Consolidate/.idea/vcs.xml diff --git a/src/.idea/.idea.DotNet.Consolidate/.idea/.gitignore b/src/.idea/.idea.DotNet.Consolidate/.idea/.gitignore new file mode 100644 index 0000000..9c3af7d --- /dev/null +++ b/src/.idea/.idea.DotNet.Consolidate/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/contentModel.xml +/modules.xml +/projectSettingsUpdater.xml +/.idea.DotNet.Consolidate.iml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/src/.idea/.idea.DotNet.Consolidate/.idea/.name b/src/.idea/.idea.DotNet.Consolidate/.idea/.name new file mode 100644 index 0000000..89bc4d9 --- /dev/null +++ b/src/.idea/.idea.DotNet.Consolidate/.idea/.name @@ -0,0 +1 @@ +DotNet.Consolidate \ No newline at end of file diff --git a/src/.idea/.idea.DotNet.Consolidate/.idea/encodings.xml b/src/.idea/.idea.DotNet.Consolidate/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/src/.idea/.idea.DotNet.Consolidate/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/.idea/.idea.DotNet.Consolidate/.idea/indexLayout.xml b/src/.idea/.idea.DotNet.Consolidate/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/src/.idea/.idea.DotNet.Consolidate/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/.idea/.idea.DotNet.Consolidate/.idea/misc.xml b/src/.idea/.idea.DotNet.Consolidate/.idea/misc.xml new file mode 100644 index 0000000..3ce3588 --- /dev/null +++ b/src/.idea/.idea.DotNet.Consolidate/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/src/.idea/.idea.DotNet.Consolidate/.idea/vcs.xml b/src/.idea/.idea.DotNet.Consolidate/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/src/.idea/.idea.DotNet.Consolidate/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/DotNet.Consolidate/DotNet.Consolidate.csproj b/src/DotNet.Consolidate/DotNet.Consolidate.csproj index 7928274..1eb546b 100644 --- a/src/DotNet.Consolidate/DotNet.Consolidate.csproj +++ b/src/DotNet.Consolidate/DotNet.Consolidate.csproj @@ -9,7 +9,7 @@ true dotnet-consolidate - 2.0.0 + 2.1.0 diff --git a/src/DotNet.Consolidate/Models/Options.cs b/src/DotNet.Consolidate/Models/Options.cs index 648ed40..be705ea 100644 --- a/src/DotNet.Consolidate/Models/Options.cs +++ b/src/DotNet.Consolidate/Models/Options.cs @@ -6,16 +6,20 @@ namespace DotNet.Consolidate.Models { public class Options { - public Options(ICollection solutions, ICollection packageIds) + public Options(ICollection solutions, ICollection? packageIds, ICollection? excludedPackageIds) { Solutions = solutions; PackageIds = packageIds; + ExcludedPackageIds = excludedPackageIds; } - [Option('p', "pacakgeIds", Required = false, HelpText = "Package IDs to check consolidation.")] + [Option('p', "packageIds", Required = false, HelpText = "Package IDs for checking.")] public ICollection? PackageIds { get; } - [Option('s', "solutions", Required = true, HelpText = "Target solution for consolidation.")] + [Option('e', "excluded", Required = false, HelpText = "Package IDs that will be skipped during checking.")] + public ICollection? ExcludedPackageIds { get; } + + [Option('s', "solutions", Required = true, HelpText = "Target solutions for checking.")] public ICollection Solutions { get; } } } diff --git a/src/DotNet.Consolidate/Program.cs b/src/DotNet.Consolidate/Program.cs index 257fde2..0f38941 100644 --- a/src/DotNet.Consolidate/Program.cs +++ b/src/DotNet.Consolidate/Program.cs @@ -9,7 +9,7 @@ namespace DotNet.Consolidate { - internal class Program + internal static class Program { private static void HandleParseError(IEnumerable errors) { @@ -24,12 +24,20 @@ private static void Main(string[] args) { Parser.Default.ParseArguments(args) .WithParsed(Consolidate) - .WithNotParsed(errors => HandleParseError(errors)); + .WithNotParsed(HandleParseError); } private static void Consolidate(Options options) { var logger = new Logger(); + if (options.ExcludedPackageIds?.Any() == true && options.PackageIds?.Any() == true) + { + logger.Message("There is no sense to provide both `-p` and `-e` arguments at the same time."); + Environment.ExitCode = 1; + + return; + } + var solutionInfoProvider = new SolutionInfoProvider(new ProjectParser(), logger); var solutionsInfo = solutionInfoProvider.GetSolutionsInfo(options.Solutions); diff --git a/src/DotNet.Consolidate/Services/PackagesAnalyzer.cs b/src/DotNet.Consolidate/Services/PackagesAnalyzer.cs index 572f40d..219f203 100644 --- a/src/DotNet.Consolidate/Services/PackagesAnalyzer.cs +++ b/src/DotNet.Consolidate/Services/PackagesAnalyzer.cs @@ -30,6 +30,11 @@ public List FindNonConsolidatedPackages(ICollection return nonConsolidatedPackages.Where(p => options.PackageIds.Contains(p.NuGetPackageId)).ToList(); } + if (options.ExcludedPackageIds?.Any() == true) + { + return nonConsolidatedPackages.Where(p => !options.ExcludedPackageIds.Contains(p.NuGetPackageId)).ToList(); + } + return nonConsolidatedPackages.ToList(); } } diff --git a/src/DotNet.Consolidate/Services/SolutionInfoProvider.cs b/src/DotNet.Consolidate/Services/SolutionInfoProvider.cs index 6e7130c..4c03fdd 100644 --- a/src/DotNet.Consolidate/Services/SolutionInfoProvider.cs +++ b/src/DotNet.Consolidate/Services/SolutionInfoProvider.cs @@ -33,6 +33,7 @@ public List GetSolutionsInfo(ICollection solutionsPath) return solutionInfos; } + // ReSharper disable once CognitiveComplexity private List TryGetProjectsInfo(string filePath) { var solutionInfos = new List();