From 8c10e70f417f7d1d56ae35511ca986e869856bb7 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 10 Oct 2019 09:49:23 +0300 Subject: [PATCH] removed NugetReferenceReplaceStep --- .../ModuleProjectBuildPipelineBuilder.cs | 2 +- .../Steps/NugetReferenceReplaceStep.cs | 138 ------------------ 2 files changed, 1 insertion(+), 139 deletions(-) delete mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/NugetReferenceReplaceStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ModuleProjectBuildPipelineBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ModuleProjectBuildPipelineBuilder.cs index 3a5fcee77b..fc2a5b0dbc 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ModuleProjectBuildPipelineBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ModuleProjectBuildPipelineBuilder.cs @@ -9,7 +9,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building var pipeline = new ProjectBuildPipeline(context); pipeline.Steps.Add(new FileEntryListReadStep()); - pipeline.Steps.Add(new NugetReferenceReplaceStep()); + pipeline.Steps.Add(new ProjectReferenceReplaceStep()); pipeline.Steps.Add(new CreateProjectResultZipStep()); return pipeline; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/NugetReferenceReplaceStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/NugetReferenceReplaceStep.cs deleted file mode 100644 index 7d08ed7ff6..0000000000 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/NugetReferenceReplaceStep.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Text.RegularExpressions; -using System.Xml; -using Volo.Abp.Cli.ProjectBuilding.Files; - -namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps -{ - public class NugetReferenceReplaceStep : ProjectBuildPipelineStep - { - public override void Execute(ProjectBuildContext context) - { - var nugetPackageVersion = context.TemplateFile.Version; - if (IsBranchName(nugetPackageVersion)) - { - nugetPackageVersion = context.TemplateFile.LatestVersion; - } - - new NugetReferenceReplacer( - context.Files, - context.Module?.Namespace ?? "MyCompanyName.MyProjectName", - nugetPackageVersion - ).Run(); - } - - private bool IsBranchName(string versionOrBranchName) - { - Check.NotNullOrWhiteSpace(versionOrBranchName, nameof(versionOrBranchName)); - - if (char.IsDigit(versionOrBranchName[0])) - { - return false; - } - - if (versionOrBranchName[0].IsIn('v','V') && - versionOrBranchName.Length > 1 && - char.IsDigit(versionOrBranchName[1])) - { - return false; - } - - return true; - } - - private class NugetReferenceReplacer - { - private readonly List _entries; - private readonly string _companyAndProjectNamePlaceHolder; - private readonly string _nugetPackageVersion; - - public NugetReferenceReplacer( - List entries, - string companyAndProjectNamePlaceHolder, - string nugetPackageVersion) - { - _entries = entries; - _companyAndProjectNamePlaceHolder = companyAndProjectNamePlaceHolder; - _nugetPackageVersion = nugetPackageVersion; - } - - public void Run() - { - foreach (var fileEntry in _entries) - { - if (fileEntry.Name.EndsWith(".csproj")) - { - fileEntry.SetContent(ProcessFileContent(fileEntry.Content)); - } - } - } - - private string ProcessFileContent(string content) - { - Check.NotNull(content, nameof(content)); - - var doc = new XmlDocument() { PreserveWhitespace = true }; - - doc.Load(GenerateStreamFromString(content)); - - return ProcessReferenceNodes(doc, content); - } - - private string ProcessReferenceNodes(XmlDocument doc, string content) - { - Check.NotNull(content, nameof(content)); - - var nodes = doc.SelectNodes("/Project/ItemGroup/ProjectReference[@Include]"); - - foreach (XmlNode oldNode in nodes) - { - var oldNodeIncludeValue = oldNode.Attributes["Include"].Value; - - // ReSharper disable once PossibleNullReferenceException : Can not be null because nodes are selected with include attribute filter in previous method - if (oldNodeIncludeValue.Contains($"{_companyAndProjectNamePlaceHolder}")) - { - continue; - } - - var newNode = doc.CreateElement("PackageReference"); - - var includeAttr = doc.CreateAttribute("Include"); - includeAttr.Value = ConvertToNugetReference(oldNodeIncludeValue); - newNode.Attributes.Append(includeAttr); - - var versionAttr = doc.CreateAttribute("Version"); - versionAttr.Value = _nugetPackageVersion; - newNode.Attributes.Append(versionAttr); - - oldNode.ParentNode.ReplaceChild(newNode, oldNode); - } - - return doc.OuterXml; - } - - private string ConvertToNugetReference(string oldValue) - { - var newValue = Regex.Match(oldValue, @"\\((?!.+?\\).+?)\.csproj", RegexOptions.CultureInvariant | RegexOptions.Compiled); - if (newValue.Success && newValue.Groups.Count == 2) - { - return newValue.Groups[1].Value; - } - - return oldValue; - } - - private static Stream GenerateStreamFromString(string s) - { - var stream = new MemoryStream(); - var writer = new StreamWriter(stream); - writer.Write(s); - writer.Flush(); - stream.Position = 0; - return stream; - } - } - } -}