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();
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
};
}

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

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

Loading…
Cancel
Save