From 080f27b585a1bdda3c0860051f603243e89c8ebd Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 23 Mar 2021 11:24:03 +0300 Subject: [PATCH] Cli: support for microservice blazor-server --- .../Building/Steps/RenameProjectInTyeStep.cs | 37 +++++++++++++++++ .../Templates/App/AppTemplateBase.cs | 16 ++++---- .../Microservice/MicroserviceTemplateBase.cs | 41 +++++++++++++++++++ ...meStep.cs => TemplateProjectRenameStep.cs} | 11 ++--- 4 files changed, 89 insertions(+), 16 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameProjectInTyeStep.cs rename framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/{App/AppTemplateProjectRenameStep.cs => TemplateProjectRenameStep.cs} (59%) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameProjectInTyeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameProjectInTyeStep.cs new file mode 100644 index 0000000000..502bdb1d14 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameProjectInTyeStep.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class RenameProjectInTyeStep : ProjectBuildPipelineStep + { + private readonly string _oldName; + private readonly string _newName; + + public RenameProjectInTyeStep(string oldName, string newName) + { + _oldName = oldName; + _newName = newName; + } + + public override void Execute(ProjectBuildContext context) + { + var tyeFile = context.Files.FirstOrDefault(f => f.Name == "/tye.yaml"); + + if (tyeFile == null) + { + return; + } + + var lines = tyeFile.GetLines(); + var oldNameLine = $"- name: {_oldName}"; + var newNameLine = $"- name: {_newName}"; + + var newLines = lines.Select(line => line.Equals(oldNameLine) ? newNameLine : line).ToList(); + + tyeFile.SetContent(string.Join(Environment.NewLine, newLines)); + } + + } +} 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 358cf75a3c..1b0d89f239 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 @@ -44,7 +44,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App if (context.BuildArgs.ExtraProperties.ContainsKey("separate-tenant-schema")) { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.EntityFrameworkCore.SeparateDbMigrations", "MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.EntityFrameworkCore.SeparateDbMigrations", "MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); } else { @@ -156,7 +156,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App if (context.BuildArgs.ExtraProperties.ContainsKey(NewCommand.Options.Tiered.Long) || context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server")) { - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Public.Host","MyCompanyName.MyProjectName.Web.Public")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Public.Host","MyCompanyName.MyProjectName.Web.Public")); steps.Add(new ChangeDbMigratorPublicPortStep()); } else if (context.BuildArgs.UiFramework != UiFramework.NotSpecified && context.BuildArgs.UiFramework != UiFramework.Mvc) @@ -190,7 +190,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305")); } } @@ -211,7 +211,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305")); } } @@ -226,13 +226,13 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App if (context.BuildArgs.ExtraProperties.ContainsKey("tiered")) { - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server.Tiered", "MyCompanyName.MyProjectName.Blazor")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server.Tiered", "MyCompanyName.MyProjectName.Blazor")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new AppTemplateChangeDbMigratorPortSettingsStep("44300")); } else { - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server", "MyCompanyName.MyProjectName.Blazor")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server", "MyCompanyName.MyProjectName.Blazor")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server.Tiered")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); @@ -246,7 +246,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests")); - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web")); steps.Add(new AppTemplateChangeDbMigratorPortSettingsStep("44300")); } else @@ -281,7 +281,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); - steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host")); steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305")); } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs index 8b7bcbbadb..76c2fe6bb5 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs @@ -30,6 +30,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice private static void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) { + //TODO: move common tasks to methods switch (context.BuildArgs.UiFramework) { case UiFramework.None: @@ -41,8 +42,11 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server",null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveFolderStep("/apps/blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor")); + steps.Add(new RemoveProjectFromTyeStep("blazor-server")); steps.Add(new RemoveFolderStep("/apps/angular")); break; @@ -56,8 +60,11 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server",null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveFolderStep("/apps/blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor")); + steps.Add(new RemoveProjectFromTyeStep("blazor-server")); break; case UiFramework.Blazor: @@ -67,14 +74,48 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice steps.Add(new RemoveFolderStep("/apps/angular")); steps.Add(new RemoveProjectFromTyeStep("web")); steps.Add(new RemoveProjectFromPrometheusStep("web")); + + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server", + "/apps/blazor/MyCompanyName.MyProjectName.Blazor.sln", + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server", + null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); + steps.Add(new RemoveProjectFromTyeStep("blazor-server")); + + break; + + case UiFramework.BlazorServer: + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web",null, + "/apps/web/src/MyCompanyName.MyProjectName.Web")); + steps.Add(new RemoveFolderStep("/apps/web")); + steps.Add(new RemoveFolderStep("/apps/angular")); + steps.Add(new RemoveProjectFromTyeStep("web")); + steps.Add(new RemoveProjectFromPrometheusStep("web")); + + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor", + "/apps/blazor/MyCompanyName.MyProjectName.Blazor.sln", + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor", + null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromTyeStep("blazor")); + + steps.Add(new TemplateProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server", + "MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RenameProjectInTyeStep("blazor-server", "blazor")); + break; case UiFramework.Mvc: case UiFramework.NotSpecified: steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor",null, "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server",null, + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server")); steps.Add(new RemoveFolderStep("/apps/blazor")); steps.Add(new RemoveProjectFromTyeStep("blazor")); + steps.Add(new RemoveProjectFromTyeStep("blazor-server")); steps.Add(new RemoveFolderStep("/apps/angular")); break; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateProjectRenameStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateProjectRenameStep.cs similarity index 59% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateProjectRenameStep.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateProjectRenameStep.cs index f307bc6626..66134310e8 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateProjectRenameStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateProjectRenameStep.cs @@ -1,15 +1,14 @@ using Volo.Abp.Cli.ProjectBuilding.Building; using Volo.Abp.Cli.ProjectBuilding.Building.Steps; -using Volo.Abp.Cli.ProjectBuilding.Files; -namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +namespace Volo.Abp.Cli.ProjectBuilding.Templates { - public class AppTemplateProjectRenameStep : ProjectBuildPipelineStep + public class TemplateProjectRenameStep : ProjectBuildPipelineStep { private readonly string _oldProjectName; private readonly string _newProjectName; - public AppTemplateProjectRenameStep( + public TemplateProjectRenameStep( string oldProjectName, string newProjectName) { @@ -19,10 +18,6 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App public override void Execute(ProjectBuildContext context) { - context - .GetFile("/aspnet-core/MyCompanyName.MyProjectName.sln") - .ReplaceText(_oldProjectName, _newProjectName); - RenameHelper.RenameAll(context.Files, _oldProjectName, _newProjectName); } }