From 7c450d764ae2a3a2021093e128c88ac2fd42d930 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 29 Sep 2021 13:04:18 +0300 Subject: [PATCH] Refactor SolutionAbpVersionFinder (Renamed to SolutionPackageVersionFinder) --- .../Volo/Abp/Cli/Commands/AddModuleCommand.cs | 8 +++--- ...der.cs => SolutionPackageVersionFinder.cs} | 26 +++++++++---------- .../Volo/Abp/Cli/ProjectVersionParse_Tests.cs | 4 +-- 3 files changed, 19 insertions(+), 19 deletions(-) rename framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/{SolutionAbpVersionFinder.cs => SolutionPackageVersionFinder.cs} (82%) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs index 99ddba2de8..aa31060c48 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs @@ -18,7 +18,7 @@ namespace Volo.Abp.Cli.Commands public ILogger Logger { get; set; } protected SolutionModuleAdder SolutionModuleAdder { get; } - public SolutionAbpVersionFinder SolutionAbpVersionFinder { get; } + public SolutionPackageVersionFinder SolutionPackageVersionFinder { get; } public AddModuleInfoOutput LastAddedModuleInfo { @@ -33,10 +33,10 @@ namespace Volo.Abp.Cli.Commands } } - public AddModuleCommand(SolutionModuleAdder solutionModuleAdder, SolutionAbpVersionFinder solutionAbpVersionFinder) + public AddModuleCommand(SolutionModuleAdder solutionModuleAdder, SolutionPackageVersionFinder solutionPackageVersionFinder) { SolutionModuleAdder = solutionModuleAdder; - SolutionAbpVersionFinder = solutionAbpVersionFinder; + SolutionPackageVersionFinder = solutionPackageVersionFinder; Logger = NullLogger.Instance; } @@ -62,7 +62,7 @@ namespace Volo.Abp.Cli.Commands var version = commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long); if (version == null) { - version = SolutionAbpVersionFinder.Find(solutionFile); + version = SolutionPackageVersionFinder.Find(solutionFile); } var moduleInfo = await SolutionModuleAdder.AddAsync( diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionAbpVersionFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionPackageVersionFinder.cs similarity index 82% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionAbpVersionFinder.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionPackageVersionFinder.cs index 93dbeacc22..e3aa93bdf3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionAbpVersionFinder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionPackageVersionFinder.cs @@ -7,15 +7,15 @@ using Volo.Abp.DependencyInjection; namespace Volo.Abp.Cli.ProjectModification { - public class SolutionAbpVersionFinder : ITransientDependency + public class SolutionPackageVersionFinder : ITransientDependency { - public string Find(string solutionFile) + public string Find(string solutionFile, string packagePrefix = "Volo.Abp") { var projectFilesUnderSrc = GetProjectFilesOfSolution(solutionFile); foreach (var projectFile in projectFilesUnderSrc) { var content = File.ReadAllText(projectFile); - if (TryParseVersionFromCsprojViaXmlDocument(content, out var s)) + if (TryParseVersionFromCsprojViaXmlDocument(content, out var s, packagePrefix)) { return s; } @@ -24,13 +24,13 @@ namespace Volo.Abp.Cli.ProjectModification return null; } - private static bool TryParseVersionFromCsprojViaXmlDocument(string content, out string version) + private static bool TryParseVersionFromCsprojViaXmlDocument(string content, out string version, string packagePrefix) { var doc = new XmlDocument() { PreserveWhitespace = true }; using (var stream = StreamHelper.GenerateStreamFromString(content)) { doc.Load(stream); - var nodes = doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.Abp')]"); + var nodes = doc.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{packagePrefix}')]"); var value = nodes?[0]?.Attributes?["Version"]?.Value; if (value == null) { @@ -43,12 +43,12 @@ namespace Volo.Abp.Cli.ProjectModification } } - public static bool TryParseVersionFromCsprojFile(string csprojContent, out string version) + public static bool TryParseVersionFromCsprojFile(string csprojContent, out string version, string packagePrefix = "Volo.Abp") { try { var matches = Regex.Matches(csprojContent, - @"PackageReference\s*Include\s*=\s*\""Volo.Abp(.*?)\""\s*Version\s*=\s*\""(.*?)\""", + @"PackageReference\s*Include\s*=\s*\""" + packagePrefix + @"(.*?)\""\s*Version\s*=\s*\""(.*?)\""", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline | RegexOptions.Multiline); @@ -72,11 +72,11 @@ namespace Volo.Abp.Cli.ProjectModification } - public static bool TryParseSemanticVersionFromCsprojFile(string csprojContent, out SemanticVersion version) + public static bool TryParseSemanticVersionFromCsprojFile(string csprojContent, out SemanticVersion version, string packagePrefix = "Volo.Abp") { try { - if (TryParseVersionFromCsprojFile(csprojContent, out var versionText)) + if (TryParseVersionFromCsprojFile(csprojContent, out var versionText, packagePrefix)) { return SemanticVersion.TryParse(versionText, out version); } @@ -90,13 +90,13 @@ namespace Volo.Abp.Cli.ProjectModification return false; } - public static bool TryFind(string solutionFile, out string version) + public static bool TryFind(string solutionFile, out string version, string packagePrefix = "Volo.Abp") { var projectFiles = GetProjectFilesOfSolution(solutionFile); foreach (var projectFile in projectFiles) { var csprojContent = File.ReadAllText(projectFile); - if (TryParseVersionFromCsprojFile(csprojContent, out var parsedVersion)) + if (TryParseVersionFromCsprojFile(csprojContent, out var parsedVersion, packagePrefix)) { version = parsedVersion; return true; @@ -107,13 +107,13 @@ namespace Volo.Abp.Cli.ProjectModification return false; } - public static bool TryFindSemanticVersion(string solutionFile, out SemanticVersion version) + public static bool TryFindSemanticVersion(string solutionFile, out SemanticVersion version, string packagePrefix = "Volo.Abp") { var projectFiles = GetProjectFilesOfSolution(solutionFile); foreach (var projectFile in projectFiles) { var csprojContent = File.ReadAllText(projectFile); - if (TryParseSemanticVersionFromCsprojFile(csprojContent, out var parsedVersion)) + if (TryParseSemanticVersionFromCsprojFile(csprojContent, out var parsedVersion, packagePrefix)) { version = parsedVersion; return true; diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs index eb4a9eda24..20e870dfe9 100644 --- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs +++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs @@ -36,7 +36,7 @@ namespace Volo.Abp.Cli "" + ""; - var success = SolutionAbpVersionFinder.TryParseVersionFromCsprojFile(csprojContent, out var version); + var success = SolutionPackageVersionFinder.TryParseVersionFromCsprojFile(csprojContent, out var version); success.ShouldBe(true); version.ShouldBe("4.4.0-rc.1"); } @@ -58,7 +58,7 @@ namespace Volo.Abp.Cli "" + ""; - var success = SolutionAbpVersionFinder.TryParseSemanticVersionFromCsprojFile(csprojContent, out var version); + var success = SolutionPackageVersionFinder.TryParseSemanticVersionFromCsprojFile(csprojContent, out var version); success.ShouldBe(true); version.Major.ShouldBe(12); version.Minor.ShouldBe(8);