From 80310028cd14e35f73d1cda176f5994ddc3cccc7 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 25 Jan 2023 14:35:42 +0300 Subject: [PATCH] Refactor & enhancements --- .../Steps/AppNoLayersMoveProjectsStep.cs | 57 +++++++++++++++++++ .../Building/Steps/MoveProjectStep.cs | 40 ------------- .../Templates/App/AppNoLayersTemplateBase.cs | 19 ++----- .../Templates/App/AppTemplateBase.cs | 3 +- 4 files changed, 63 insertions(+), 56 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs delete mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveProjectStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs new file mode 100644 index 0000000000..29cdc07ade --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs @@ -0,0 +1,57 @@ +using System; +using System.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; + +public class AppNoLayersMoveProjectsStep : ProjectBuildPipelineStep +{ + public override void Execute(ProjectBuildContext context) + { + MoveFiles(context, "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client", + "/aspnet-core/MyCompanyName.MyProjectName.Blazor"); + MoveFiles(context, "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server", + "/aspnet-core/MyCompanyName.MyProjectName.Host"); + MoveFiles(context, "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared", + "/aspnet-core/MyCompanyName.MyProjectName.Contracts"); + + ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Client\\MyCompanyName.MyProjectName.Blazor.csproj", + "MyCompanyName.MyProjectName.Blazor\\MyCompanyName.MyProjectName.Blazor.csproj"); + ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Server\\MyCompanyName.MyProjectName.Host.csproj", + "MyCompanyName.MyProjectName.Host\\MyCompanyName.MyProjectName.Host.csproj"); + ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Server.Mongo\\MyCompanyName.MyProjectName.Host.csproj", + "MyCompanyName.MyProjectName.Host\\MyCompanyName.MyProjectName.Host.csproj"); + ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Shared\\MyCompanyName.MyProjectName.Contracts.csproj", + "MyCompanyName.MyProjectName.Contracts\\MyCompanyName.MyProjectName.Contracts.csproj"); + + ModifyProjectFiles(context, "..\\Shared\\MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared.csproj", + "..\\MyCompanyName.MyProjectName.Contracts\\MyCompanyName.MyProjectName.Contracts.csproj"); + + ModifyProjectFiles(context, "..\\Client\\MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj", + "..\\MyCompanyName.MyProjectName.Blazor\\MyCompanyName.MyProjectName.Blazor.csproj"); + } + + public void MoveFiles(ProjectBuildContext context, string projectFolder, string newProjectFolder) + { + var fileEntries = context.Files.Where(file => file.Name.StartsWith(projectFolder)).ToList(); + foreach (var fileEntry in fileEntries) + { + fileEntry.SetName(fileEntry.Name.ReplaceFirst(projectFolder, newProjectFolder)); + } + } + + public void ModifySolutionFile(ProjectBuildContext context, string pathInSlnFile, string newPathInSlnFile) + { + var slnFile = context.Files.First(file => file.Name.EndsWith(".sln")); + slnFile.SetContent(slnFile.Content.Replace($"\"{pathInSlnFile}\"", $"\"{newPathInSlnFile}\"")); + } + + public void ModifyProjectFiles(ProjectBuildContext context, string oldContent, string newContent) + { + var projectFiles = context.Files.Where(file => file.Name.EndsWith(".csproj")); + + foreach (var projectFile in projectFiles) + { + projectFile.SetContent(projectFile.Content.Replace(oldContent,newContent)); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveProjectStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveProjectStep.cs deleted file mode 100644 index f8302f1f5b..0000000000 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveProjectStep.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Linq; - -namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; - -public class MoveProjectStep : ProjectBuildPipelineStep -{ - private readonly string _pathInSlnFile; - private readonly string _newPathInSlnFile; - private readonly string _projectFolder; - private readonly string _newProjectFolder; - - public MoveProjectStep(string projectFolder, string newProjectFolder, string pathInSlnFile, string newPathInSlnFile) - { - _pathInSlnFile = pathInSlnFile; - _newPathInSlnFile = newPathInSlnFile; - _projectFolder = projectFolder.EnsureEndsWith('/'); - _newProjectFolder = newProjectFolder.EnsureEndsWith('/'); - } - - public override void Execute(ProjectBuildContext context) - { - var fileEntries = context.Files.Where(file => file.Name.StartsWith(_projectFolder)).ToList(); - foreach (var fileEntry in fileEntries) - { - var newName = fileEntry.Name.ReplaceFirst(_projectFolder, _newProjectFolder); - - if (newName.IsIn("", "/")) - { - context.Files.Remove(fileEntry); - continue; - } - - fileEntry.SetName(newName); - } - - var slnFile = context.Files.First(file => file.Name.EndsWith(".sln")); - slnFile.SetContent(slnFile.Content.Replace($"\"{_pathInSlnFile}\"", $"\"{_newPathInSlnFile}\"")); - } -} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs index 80fce48346..ea2f829614 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs @@ -29,15 +29,15 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc.Mongo")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host.Mongo")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server.Mongo")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo", projectFolderPath: "/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo", projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo")); break; case DatabaseProvider.MongoDb: steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server", projectFolderPath: "/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server", projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server")); - steps.Add(new MoveFolderStep("/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo", "/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server")); + steps.Add(new MoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo", "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server")); steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Mvc.Mongo", "MyCompanyName.MyProjectName.Mvc")); steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Host.Mongo", "MyCompanyName.MyProjectName.Host")); steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server.Mongo", "MyCompanyName.MyProjectName.Blazor.Server")); @@ -77,18 +77,7 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared", "MyCompanyName.MyProjectName.Contracts")); - steps.Add(new MoveProjectStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client", - "/aspnet-core/MyCompanyName.MyProjectName.Blazor", - "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Client\\MyCompanyName.MyProjectName.Blazor.csproj", - "MyCompanyName.MyProjectName.Blazor\\MyCompanyName.MyProjectName.Blazor.csproj")); - steps.Add(new MoveProjectStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server", - "/aspnet-core/MyCompanyName.MyProjectName.Host", - "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Server\\MyCompanyName.MyProjectName.Host.csproj", - "MyCompanyName.MyProjectName.Host\\MyCompanyName.MyProjectName.Host.csproj")); - steps.Add(new MoveProjectStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared", - "/aspnet-core/MyCompanyName.MyProjectName.Contracts", - "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Shared\\MyCompanyName.MyProjectName.Contracts.csproj", - "MyCompanyName.MyProjectName.Contracts\\MyCompanyName.MyProjectName.Contracts.csproj")); + steps.Add(new AppNoLayersMoveProjectsStep()); steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly")); break; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index 10063b84e5..4958ad802c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -584,7 +584,8 @@ public abstract class AppTemplateBase : TemplateInfo "https://localhost:44306", "https://localhost:44307", "https://localhost:44308", - "https://localhost:44309" + "https://localhost:44309", + "https://localhost:44310" } ) );