diff --git a/build-all.ps1 b/build-all.ps1 index f4ff6ae116..023cbdeb4a 100644 --- a/build-all.ps1 +++ b/build-all.ps1 @@ -19,7 +19,7 @@ $solutionPaths = ( "modules/audit-logging", "modules/background-jobs", "modules/client-simulation", - "templates/mvc-module", + "templates/module/aspnet-core", "templates/app/aspnet-core", "samples/MicroserviceDemo", "abp_io/AbpIoLocalization" diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs index ceb79b2a53..53f8c566cd 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs @@ -19,6 +19,8 @@ namespace Volo.Abp.Cli.ProjectBuilding { case AppTemplate.TemplateName: return new AppTemplate(); + case AppProTemplate.TemplateName: + return new AppProTemplate(); case ModuleTemplate.TemplateName: return new ModuleTemplate(); default: diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs new file mode 100644 index 0000000000..1b05b887c5 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs @@ -0,0 +1,16 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class AppProTemplate : AppTemplateBase + { + /// + /// "app-pro". + /// + public const string TemplateName = "app-pro"; + + public AppProTemplate() + : base(TemplateName) + { + + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs index 8dbedb61f4..030a0a8752 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs @@ -1,123 +1,16 @@ -using System.Collections.Generic; -using Volo.Abp.Cli.ProjectBuilding.Building; -using Volo.Abp.Cli.ProjectBuilding.Building.Steps; - -namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { - public class AppTemplate : TemplateInfo + public class AppTemplate : AppTemplateBase { /// /// "app". /// public const string TemplateName = "app"; - public AppTemplate() - : base(TemplateName, DatabaseProvider.EntityFrameworkCore, UiFramework.Mvc) - { - DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Application"; - } - - public override IEnumerable GetCustomSteps(ProjectBuildContext context) - { - var steps = new List(); - - SwitchDatabaseProvider(context, steps); - DeleteUnrelatedProjects(context, steps); - RandomizeSslPorts(context, steps); - CleanupFolderHierarchy(context, steps); - - return steps; - } - - private static void SwitchDatabaseProvider(ProjectBuildContext context, List steps) + public AppTemplate() + : base(TemplateName) { - if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb) - { - steps.Add(new AppTemplateSwitchEntityFrameworkCoreToMongoDbStep()); - } - - if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore) - { - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests")); - } - - if (context.BuildArgs.DatabaseProvider != DatabaseProvider.MongoDb) - { - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests")); - } - } - private void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) - { - if (context.BuildArgs.UiFramework == UiFramework.Mvc) - { - if (context.BuildArgs.ExtraProperties.ContainsKey("tiered")) - { - 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")); - } - else - { - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); - steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44303")); - } - - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); - } - - if (context.BuildArgs.UiFramework != UiFramework.Mvc) - { - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host")); - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests")); - - if (context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server")) - { - steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); - steps.Add(new AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep()); - } - else - { - 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 AppTemplateChangeConsoleTestClientPortSettingsStep("44305")); - } - } - - if (context.BuildArgs.UiFramework != UiFramework.Angular) - { - steps.Add(new RemoveFolderStep("/angular")); - } - } - - private static void RandomizeSslPorts(ProjectBuildContext context, List steps) - { - steps.Add(new TemplateRandomSslPortStep( - new List - { - "https://localhost:44300", - "https://localhost:44301", - "https://localhost:44302", - "https://localhost:44303", - "https://localhost:44305" - } - ) - ); - } - - private void CleanupFolderHierarchy(ProjectBuildContext context, List steps) - { - if (context.BuildArgs.UiFramework == UiFramework.Mvc) - { - steps.Add(new MoveFolderStep("/aspnet-core/", "/")); - } } } } \ No newline at end of file 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 new file mode 100644 index 0000000000..559ddbf2b6 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -0,0 +1,124 @@ +using System.Collections.Generic; +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.ProjectBuilding.Building.Steps; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public abstract class AppTemplateBase : TemplateInfo + { + protected AppTemplateBase(string templateName) + : base(templateName, DatabaseProvider.EntityFrameworkCore, UiFramework.Mvc) + { + DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Application"; + } + + public static bool IsAppTemplate(string templateName) + { + return templateName == AppTemplate.TemplateName || + templateName == AppProTemplate.TemplateName; + } + + public override IEnumerable GetCustomSteps(ProjectBuildContext context) + { + var steps = new List(); + + SwitchDatabaseProvider(context, steps); + DeleteUnrelatedProjects(context, steps); + RandomizeSslPorts(context, steps); + CleanupFolderHierarchy(context, steps); + + return steps; + } + + private static void SwitchDatabaseProvider(ProjectBuildContext context, List steps) + { + if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb) + { + steps.Add(new AppTemplateSwitchEntityFrameworkCoreToMongoDbStep()); + } + + if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests")); + } + + if (context.BuildArgs.DatabaseProvider != DatabaseProvider.MongoDb) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests")); + } + } + + private void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) + { + if (context.BuildArgs.UiFramework == UiFramework.Mvc) + { + if (context.BuildArgs.ExtraProperties.ContainsKey("tiered")) + { + 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")); + } + else + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer")); + steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44303")); + } + + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); + } + + if (context.BuildArgs.UiFramework != UiFramework.Mvc) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host")); + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests")); + + if (context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server")) + { + steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); + steps.Add(new AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep()); + } + else + { + 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 AppTemplateChangeConsoleTestClientPortSettingsStep("44305")); + } + } + + if (context.BuildArgs.UiFramework != UiFramework.Angular) + { + steps.Add(new RemoveFolderStep("/angular")); + } + } + + private static void RandomizeSslPorts(ProjectBuildContext context, List steps) + { + steps.Add(new TemplateRandomSslPortStep( + new List + { + "https://localhost:44300", + "https://localhost:44301", + "https://localhost:44302", + "https://localhost:44303", + "https://localhost:44305" + } + ) + ); + } + + private void CleanupFolderHierarchy(ProjectBuildContext context, List steps) + { + if (context.BuildArgs.UiFramework == UiFramework.Mvc) + { + steps.Add(new MoveFolderStep("/aspnet-core/", "/")); + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs index facbeef476..8b30ca2519 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs @@ -44,7 +44,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates ) .ToList(); - if (context.Template.Name == AppTemplate.TemplateName) + if (AppTemplateBase.IsAppTemplate(context.Template.Name)) { // no tiered if (launchSettings.Count == 1 &&