CLI: Check if it's the default theme for templates

pull/13306/head
Engincan VESKE 3 years ago
parent 36fb7e5685
commit 36d2d2358e

@ -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(); var theme = commandLineArgs.Options.GetOrNull(Options.Theme.Long)?.ToLower();
return template switch return template switch
{ {
AppTemplate.TemplateName or null => GetAppTheme(), AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName => GetAppTheme(),
AppProTemplate.TemplateName => GetAppProTheme(), AppProTemplate.TemplateName or AppNoLayersProTemplate.TemplateName or MicroserviceProTemplate.TemplateName => GetAppProTheme(),
_ => throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(Options.Theme.Long)) _ => null
}; };
Theme GetAppTheme() Theme GetAppTheme()
{ {
return theme switch return theme switch
{ {
null => AppTemplate.DefaultTheme, null or "leptonx-lite" => Theme.LeptonXLite,
"leptonx-lite" => Theme.LeptonXLite,
"basic" => Theme.Basic, "basic" => Theme.Basic,
_ => Theme.NotSpecified _ => Theme.NotSpecified
}; };
@ -552,9 +551,9 @@ public abstract class ProjectCreationCommandBase
{ {
return theme switch return theme switch
{ {
null => AppProTemplate.DefaultTheme, null or "leptonx" => Theme.LeptonX,
"leptonx" => Theme.LeptonX,
"lepton" => Theme.Lepton, "lepton" => Theme.Lepton,
"basic" => Theme.Basic,
_ => Theme.NotSpecified _ => Theme.NotSpecified
}; };
} }

@ -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 public class AppNoLayersProTemplate : AppNoLayersTemplateBase
{ {
@ -6,6 +8,8 @@ public class AppNoLayersProTemplate : AppNoLayersTemplateBase
/// "app-nolayers-pro". /// "app-nolayers-pro".
/// </summary> /// </summary>
public const string TemplateName = "app-nolayers-pro"; public const string TemplateName = "app-nolayers-pro";
public const Theme DefaultTheme = Theme.LeptonX;
public AppNoLayersProTemplate() public AppNoLayersProTemplate()
: base(TemplateName) : base(TemplateName)

@ -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 public class AppNoLayersTemplate : AppNoLayersTemplateBase
{ {
@ -7,6 +9,8 @@ public class AppNoLayersTemplate : AppNoLayersTemplateBase
/// </summary> /// </summary>
public const string TemplateName = "app-nolayers"; public const string TemplateName = "app-nolayers";
public const Theme DefaultTheme = Theme.LeptonXLite;
public AppNoLayersTemplate() public AppNoLayersTemplate()
: base(TemplateName) : base(TemplateName)
{ {

@ -1,9 +1,11 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using NuGet.Versioning; using NuGet.Versioning;
using Volo.Abp.Cli.Commands; using Volo.Abp.Cli.Commands;
using Volo.Abp.Cli.ProjectBuilding.Building; using Volo.Abp.Cli.ProjectBuilding.Building;
using Volo.Abp.Cli.ProjectBuilding.Building.Steps; using Volo.Abp.Cli.ProjectBuilding.Building.Steps;
using Volo.Abp.Cli.ProjectBuilding.Templates.Microservice;
namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; namespace Volo.Abp.Cli.ProjectBuilding.Templates.App;
@ -179,19 +181,27 @@ public abstract class AppTemplateBase : TemplateInfo
protected void ConfigureTheme(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps) protected void ConfigureTheme(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{ {
if (!context.BuildArgs.Theme.HasValue) if (!context.BuildArgs.Theme.HasValue || IsDefaultThemeForTemplate(context.BuildArgs.Theme.Value))
{ {
return; return;
} }
if (context.BuildArgs.Theme is not AppTemplate.DefaultTheme or AppProTemplate.DefaultTheme) steps.Add(new ChangeThemeStep());
{ steps.Add(new ChangeThemeStyleStep());
steps.Add(new ChangeThemeStep()); RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, isProTemplate: IsPro());
steps.Add(new ChangeThemeStyleStep());
RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, 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<ProjectBuildPipelineStep> steps, bool isProTemplate) private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List<ProjectBuildPipelineStep> steps, bool isProTemplate)
{ {
var packageJsonFilePaths = new List<string>() var packageJsonFilePaths = new List<string>()

@ -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 public class MicroserviceProTemplate : MicroserviceTemplateBase
{ {
@ -7,6 +9,8 @@ public class MicroserviceProTemplate : MicroserviceTemplateBase
/// </summary> /// </summary>
public const string TemplateName = "microservice-pro"; public const string TemplateName = "microservice-pro";
public const Theme DefaultTheme = Theme.LeptonX;
public MicroserviceProTemplate() public MicroserviceProTemplate()
: base(TemplateName) : base(TemplateName)
{ {

Loading…
Cancel
Save