From 515536b4bd74a3df8baaee42728df3b0de14506d Mon Sep 17 00:00:00 2001 From: mysticmind Date: Tue, 14 Jan 2020 14:55:00 +0530 Subject: [PATCH] Fix few bugs and regression - Fix regression causing path param to fail - Fix bug with inspection logic failing for csproj with multiple itemgroups - Bump up version to 0.2.1 --- appveyor.yml | 2 +- src/DotNetSortRefs/DotNetSortRefs.csproj | 2 +- src/DotNetSortRefs/Program.cs | 31 ++++++++++++++++-------- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 9a9db01..3bf2738 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,7 +7,7 @@ os: Visual Studio 2017 environment: DOTNET_CLI_TELEMETRY_OPTOUT: true DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true - TARGET_BUILD_VERSION: '0.2.0' + TARGET_BUILD_VERSION: '0.2.1' NUGET_DEPLOY_KEY: secure: 6yOBK0JyKMTykW1zW6B4mvc9mgQGnRGex15KG8VhOre/DSTkrUYtgbPCpiBlcX/T diff --git a/src/DotNetSortRefs/DotNetSortRefs.csproj b/src/DotNetSortRefs/DotNetSortRefs.csproj index f3434aa..222940d 100644 --- a/src/DotNetSortRefs/DotNetSortRefs.csproj +++ b/src/DotNetSortRefs/DotNetSortRefs.csproj @@ -1,7 +1,7 @@ A .NET Core global tool to alphabetically sort package references in csproj or fsproj - 0.2.0 + 0.2.1 Babu Annamalai Exe netcoreapp2.1 diff --git a/src/DotNetSortRefs/Program.cs b/src/DotNetSortRefs/Program.cs index 08c4c34..a83123c 100644 --- a/src/DotNetSortRefs/Program.cs +++ b/src/DotNetSortRefs/Program.cs @@ -90,9 +90,11 @@ private async Task OnExecute(CommandLineApplication app, IConsole console) { projFiles.Add(Path); } - - projFiles = _fileSystem.Directory.GetFiles(Path, "*.csproj", SearchOption.AllDirectories) - .Concat(_fileSystem.Directory.GetFiles(Path, "*.fsproj", SearchOption.AllDirectories)).ToList(); + else + { + projFiles = _fileSystem.Directory.GetFiles(Path, "*.csproj", SearchOption.AllDirectories) + .Concat(_fileSystem.Directory.GetFiles(Path, "*.fsproj", SearchOption.AllDirectories)).ToList(); + } if (projFiles.Count == 0) { @@ -124,21 +126,30 @@ private async Task OnExecute(CommandLineApplication app, IConsole console) private static async Task> Inspect(IEnumerable projFiles) { var projFilesWithNonSortedReferences = new List(); - + foreach (var proj in projFiles) { using (var sw = new StringWriter()) { var doc = XDocument.Parse(System.IO.File.ReadAllText(proj)); - var packages = doc.XPathSelectElements("//ItemGroup[PackageReference|Reference]/*").Select(x => x.Attribute("Include")?.Value.ToLowerInvariant()).ToList(); - var sortedPackages = packages.OrderBy(x => x); + var itemGroups = doc.XPathSelectElements("//ItemGroup[PackageReference|Reference]"); - var result = packages.SequenceEqual(sortedPackages); - - if (!result) + foreach (var itemGroup in itemGroups) { - projFilesWithNonSortedReferences.Add(proj); + var references = itemGroup.XPathSelectElements("PackageReference|Reference") + .Select(x => x.Attribute("Include")?.Value.ToLowerInvariant()).ToList(); + + if (references.Count <= 1) continue; + + var sortedReferences = references.OrderBy(x => x).ToList(); + + var result = references.SequenceEqual(sortedReferences); + + if (!result && !projFilesWithNonSortedReferences.Contains(proj)) + { + projFilesWithNonSortedReferences.Add(proj); + } } } }