diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index d4cd8201ff..fc621cdd46 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -526,23 +526,22 @@ public abstract class ProjectCreationCommandBase } } - protected virtual Theme GetThemeByTemplateOrNull(CommandLineArgs commandLineArgs, string template = "app") + protected virtual Theme? GetThemeByTemplateOrNull(CommandLineArgs commandLineArgs, string template = "app") { var theme = commandLineArgs.Options.GetOrNull(Options.Theme.Long)?.ToLower(); return template switch { - AppTemplate.TemplateName or null => GetAppTheme(), - AppProTemplate.TemplateName => GetAppProTheme(), - _ => throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(Options.Theme.Long)) + AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName => GetAppTheme(), + AppProTemplate.TemplateName or AppNoLayersProTemplate.TemplateName or MicroserviceProTemplate.TemplateName => GetAppProTheme(), + _ => null }; Theme GetAppTheme() { return theme switch { - null => AppTemplate.DefaultTheme, - "leptonx-lite" => Theme.LeptonXLite, + null or "leptonx-lite" => Theme.LeptonXLite, "basic" => Theme.Basic, _ => Theme.NotSpecified }; @@ -552,9 +551,9 @@ public abstract class ProjectCreationCommandBase { return theme switch { - null => AppProTemplate.DefaultTheme, - "leptonx" => Theme.LeptonX, + null or "leptonx" => Theme.LeptonX, "lepton" => Theme.Lepton, + "basic" => Theme.Basic, _ => Theme.NotSpecified }; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersProTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersProTemplate.cs index 7e7be0143f..73f00882bf 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersProTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersProTemplate.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; public class AppNoLayersProTemplate : AppNoLayersTemplateBase { @@ -6,6 +8,8 @@ public class AppNoLayersProTemplate : AppNoLayersTemplateBase /// "app-nolayers-pro". /// public const string TemplateName = "app-nolayers-pro"; + + public const Theme DefaultTheme = Theme.LeptonX; public AppNoLayersProTemplate() : base(TemplateName) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs index 24119c43f2..d8bcdfe3f3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; public class AppNoLayersTemplate : AppNoLayersTemplateBase { @@ -7,6 +9,8 @@ public class AppNoLayersTemplate : AppNoLayersTemplateBase /// public const string TemplateName = "app-nolayers"; + public const Theme DefaultTheme = Theme.LeptonXLite; + public AppNoLayersTemplate() : base(TemplateName) { 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 d8a37c71fd..e3d70c999f 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 @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; +using System.Linq; using NuGet.Versioning; using Volo.Abp.Cli.Commands; using Volo.Abp.Cli.ProjectBuilding.Building; using Volo.Abp.Cli.ProjectBuilding.Building.Steps; +using Volo.Abp.Cli.ProjectBuilding.Templates.Microservice; namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; @@ -179,19 +181,27 @@ public abstract class AppTemplateBase : TemplateInfo protected void ConfigureTheme(ProjectBuildContext context, List steps) { - if (!context.BuildArgs.Theme.HasValue) + if (!context.BuildArgs.Theme.HasValue || IsDefaultThemeForTemplate(context.BuildArgs.Theme.Value)) { return; } - - if (context.BuildArgs.Theme is not AppTemplate.DefaultTheme or AppProTemplate.DefaultTheme) - { - steps.Add(new ChangeThemeStep()); - steps.Add(new ChangeThemeStyleStep()); - RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, IsPro()); - } + + steps.Add(new ChangeThemeStep()); + steps.Add(new ChangeThemeStyleStep()); + RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, isProTemplate: IsPro()); } + private static bool IsDefaultThemeForTemplate(Theme theme) + { + var defaultThemesForTemplates = new[] + { + AppTemplate.DefaultTheme, AppProTemplate.DefaultTheme, AppNoLayersTemplate.DefaultTheme, + AppNoLayersProTemplate.DefaultTheme, MicroserviceProTemplate.DefaultTheme + }; + + return defaultThemesForTemplates.Contains(theme); + } + private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, bool isProTemplate) { var packageJsonFilePaths = new List() diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceProTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceProTemplate.cs index 6741a142dd..43b0884835 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceProTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceProTemplate.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice; public class MicroserviceProTemplate : MicroserviceTemplateBase { @@ -7,6 +9,8 @@ public class MicroserviceProTemplate : MicroserviceTemplateBase /// public const string TemplateName = "microservice-pro"; + public const Theme DefaultTheme = Theme.LeptonX; + public MicroserviceProTemplate() : base(TemplateName) {