diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameHelper.cs new file mode 100644 index 0000000000..6f6fc6d983 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameHelper.cs @@ -0,0 +1,60 @@ +using System.Collections.Generic; +using System.Linq; +using Volo.Abp.Cli.ProjectBuilding.Files; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public static class RenameHelper + { + public static void RenameAll(List entries, string placeHolder, string name) + { + RenameDirectoryRecursively(entries, placeHolder, name); + RenameAllFiles(entries, placeHolder, name); + ReplaceContent(entries, placeHolder, name); + } + + private static void RenameDirectoryRecursively(List entries, string placeHolder, string name) + { + foreach (var entry in entries.Where(e => e.IsDirectory)) + { + if (entry.Name.Contains(placeHolder)) + { + entry.SetName(entry.Name.Replace(placeHolder, name)); + } + } + } + + private static void RenameAllFiles(List entries, string placeHolder, string name) + { + foreach (var entry in entries.Where(e => !e.IsDirectory)) + { + if (entry.Name.Contains(placeHolder)) + { + entry.SetName(entry.Name.Replace(placeHolder, name)); + } + } + } + + private static void ReplaceContent(List entries, string placeHolder, string name) + { + foreach (var entry in entries.Where(e => !e.IsDirectory)) + { + if (entry.Content.Length < placeHolder.Length) + { + continue; + } + + if (entry.IsBinaryFile) + { + continue; + } + + var newContent = entry.Content.Replace(placeHolder, name); + if (newContent != entry.Content) + { + entry.SetContent(newContent); + } + } + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs index 069b05ff3a..076ee084d1 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs @@ -52,64 +52,14 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps { if (_companyNamePlaceHolder != null && _companyName != null) { - RenameDirectoryRecursively(_companyNamePlaceHolder, _companyName); - RenameAllFiles(_companyNamePlaceHolder, _companyName); - ReplaceContent(_companyNamePlaceHolder, _companyName); + RenameHelper.RenameAll(_entries, _companyNamePlaceHolder, _companyName); } else if (_companyNamePlaceHolder != null) { - RenameDirectoryRecursively(_companyNamePlaceHolder + "." + _projectNamePlaceHolder, _projectNamePlaceHolder); - RenameAllFiles(_companyNamePlaceHolder + "." + _projectNamePlaceHolder, _projectNamePlaceHolder); - ReplaceContent(_companyNamePlaceHolder + "." + _projectNamePlaceHolder, _projectNamePlaceHolder); + RenameHelper.RenameAll(_entries, _companyNamePlaceHolder + "." + _projectNamePlaceHolder, _projectNamePlaceHolder); } - RenameDirectoryRecursively(_projectNamePlaceHolder, _projectName); - RenameAllFiles(_projectNamePlaceHolder, _projectName); - ReplaceContent(_projectNamePlaceHolder, _projectName); - } - - private void RenameDirectoryRecursively(string placeHolder, string name) - { - foreach (var entry in _entries.Where(e => e.IsDirectory)) - { - if (entry.Name.Contains(placeHolder)) - { - entry.SetName(entry.Name.Replace(placeHolder, name)); - } - } - } - - private void RenameAllFiles(string placeHolder, string name) - { - foreach (var entry in _entries.Where(e => !e.IsDirectory)) - { - if (entry.Name.Contains(placeHolder)) - { - entry.SetName(entry.Name.Replace(placeHolder, name)); - } - } - } - - private void ReplaceContent(string placeHolder, string name) - { - foreach (var entry in _entries.Where(e => !e.IsDirectory)) - { - if (entry.Content.Length < placeHolder.Length) - { - continue; - } - - if (entry.IsBinaryFile) - { - continue; - } - - var newContent = entry.Content.Replace(placeHolder, name); - if (newContent != entry.Content) - { - entry.SetContent(newContent); - } - } + RenameHelper.RenameAll(_entries, _projectNamePlaceHolder, _projectName); } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplate.cs index f9d2c15bce..91ed2a5f96 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplate.cs @@ -32,7 +32,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc { if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb) { - steps.Add(new SwitchEntityFrameworkCoreToMongoDbStep()); + steps.Add(new MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep()); } if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore) @@ -55,6 +55,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/test/MyCompanyName.MyProjectName.Web.Tests")); + steps.Add(new MvcTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web")); //TODO: Rename Web.Host to Web //TODO: Rename HttpApi.Host to HttpApi } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateProjectRenameStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateProjectRenameStep.cs new file mode 100644 index 0000000000..978db5702d --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateProjectRenameStep.cs @@ -0,0 +1,45 @@ +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.ProjectBuilding.Building.Steps; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc +{ + public class MvcTemplateProjectRenameStep : ProjectBuildPipelineStep + { + private readonly string _oldProjectName; + private readonly string _newProjectName; + private readonly string _folder; + + public MvcTemplateProjectRenameStep( + string oldProjectName, + string newProjectName, + string folder = "/src/") + { + _oldProjectName = oldProjectName; + _newProjectName = newProjectName; + _folder = folder; + } + + public override void Execute(ProjectBuildContext context) + { + ReplaceInFile( + context, + "/MyCompanyName.MyProjectName.sln", + _oldProjectName, + _newProjectName + ); + + RenameHelper.RenameAll(context.Files, _oldProjectName, _newProjectName); + } + + public void ReplaceInFile( + ProjectBuildContext context, + string filePath, + string oldText, + string newText) + { + var file = context.GetFile(filePath); + file.NormalizeLineEndings(); + file.SetContent(file.Content.Replace(oldText, newText)); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/SwitchEntityFrameworkCoreToMongoDbStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs similarity index 98% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/SwitchEntityFrameworkCoreToMongoDbStep.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs index fe777056b2..4bbe498042 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/SwitchEntityFrameworkCoreToMongoDbStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs @@ -3,7 +3,7 @@ using Volo.Abp.Cli.ProjectBuilding.Building; namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc { - public class SwitchEntityFrameworkCoreToMongoDbStep : ProjectBuildPipelineStep + public class MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep : ProjectBuildPipelineStep { public override void Execute(ProjectBuildContext context) { diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index afcdbb8a7f..4881cdb289 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -19,11 +19,14 @@ - - + + + + + + - diff --git a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index e07ffa4b9d..6df70476ad 100644 --- a/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -12,8 +12,12 @@ using Volo.Abp; using Volo.Abp.AspNetCore.MultiTenancy; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Autofac; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.HttpApi; +using Volo.Abp.TenantManagement; using Volo.Abp.VirtualFileSystem; namespace MyCompanyName.MyProjectName @@ -21,9 +25,12 @@ namespace MyCompanyName.MyProjectName [DependsOn( typeof(AbpAutofacModule), typeof(AbpAspNetCoreMultiTenancyModule), - typeof(MyProjectNameHttpApiModule), typeof(MyProjectNameApplicationModule), - typeof(MyProjectNameEntityFrameworkCoreModule) + typeof(MyProjectNameEntityFrameworkCoreModule), + typeof(AbpIdentityHttpApiModule), + typeof(AbpPermissionManagementHttpApiModule), + typeof(AbpTenantManagementHttpApiModule), + typeof(AbpFeatureManagementHttpApiModule) )] public class MyProjectNameHttpApiHostModule : AbpModule {