Browse Source

cli: add leptonx theme compatibility

pull/13306/head
Berkan Sasmaz 4 years ago
parent
commit
504d6495fc
No known key found for this signature in database GPG Key ID: 4E387A3A3BCC339B
  1. 50
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
  2. 9
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs
  3. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs
  4. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs
  5. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs
  6. 30
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs

50
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs

@ -98,7 +98,7 @@ public abstract class ProjectCreationCommandBase
Logger.LogInformation("UI Framework: " + uiFramework); Logger.LogInformation("UI Framework: " + uiFramework);
} }
var theme = uiFramework == UiFramework.None ? (Theme?)null : GetTheme(commandLineArgs); var theme = uiFramework == UiFramework.None ? (Theme?)null : GetTheme(commandLineArgs, template);
if (theme.HasValue) if (theme.HasValue)
{ {
Logger.LogInformation("Theme: " + theme); Logger.LogInformation("Theme: " + theme);
@ -329,7 +329,7 @@ public abstract class ProjectCreationCommandBase
return DatabaseProvider.MongoDb; return DatabaseProvider.MongoDb;
} }
throw new CliUsageException("The option you provided for Database Provider is invalid!"); throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("Database Provider"));
} }
protected virtual void RunGraphBuildForMicroserviceServiceTemplate(ProjectBuildArgs projectArgs) protected virtual void RunGraphBuildForMicroserviceServiceTemplate(ProjectBuildArgs projectArgs)
@ -423,7 +423,7 @@ public abstract class ProjectCreationCommandBase
case "oracle": case "oracle":
return DatabaseManagementSystem.Oracle; return DatabaseManagementSystem.Oracle;
default: default:
throw new CliUsageException("The option you provided for Database Management System is invalid!"); throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("Database Management System"));
} }
} }
@ -439,7 +439,7 @@ public abstract class ProjectCreationCommandBase
case "react-native": case "react-native":
return MobileApp.ReactNative; return MobileApp.ReactNative;
default: default:
throw new CliUsageException("The option you provided for Mobile App is invalid!"); throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("Mobile App"));
} }
} }
@ -467,23 +467,43 @@ public abstract class ProjectCreationCommandBase
case "blazor-server": case "blazor-server":
return UiFramework.BlazorServer; return UiFramework.BlazorServer;
default: default:
throw new CliUsageException("The option you provided for UI Framework is invalid!"); throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("UI Framework"));
} }
} }
protected virtual Theme GetTheme(CommandLineArgs commandLineArgs) protected virtual Theme GetTheme(CommandLineArgs commandLineArgs, string template = "app")
{ {
var optionValue = commandLineArgs.Options.GetOrNull(Options.Theme.Long); var theme = commandLineArgs.Options.GetOrNull(Options.Theme.Long);
switch (optionValue) theme = theme?.ToLower();
Theme GetAppTheme()
{ {
case null: return theme switch
case "leptonx-lite": {
return Theme.LeptonXLite; null => AppTemplate.DefaultTheme,
case "basic": "leptonx-lite" => Theme.LeptonXLite,
return Theme.Basic; "basic" => Theme.Basic,
default: _ => Theme.NotSpecified
throw new CliUsageException("The option you provided for Theme is invalid!"); };
} }
Theme GetAppProTheme()
{
return theme switch
{
null => AppProTemplate.DefaultTheme,
"leptonx" => Theme.LeptonX,
"lepton" => Theme.Lepton,
_ => Theme.NotSpecified
};
}
return template switch
{
AppTemplate.TemplateName or null => GetAppTheme(),
AppProTemplate.TemplateName => GetAppProTheme(),
_ => throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage(Options.Theme.Long))
};
} }
protected void ConfigureNpmPackagesForTheme(ProjectBuildArgs projectArgs) protected void ConfigureNpmPackagesForTheme(ProjectBuildArgs projectArgs)

9
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs

@ -1,7 +1,10 @@
namespace Volo.Abp.Cli.ProjectBuilding.Building; namespace Volo.Abp.Cli.ProjectBuilding.Building;
public enum Theme public enum Theme : byte
{ {
LeptonXLite = 0, NotSpecified = 0,
Basic = 1 Basic = 1,
Lepton = 2,
LeptonXLite = 3,
LeptonX = 4
} }

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.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 AppProTemplate : AppTemplateBase public class AppProTemplate : AppTemplateBase
{ {
@ -6,6 +8,8 @@ public class AppProTemplate : AppTemplateBase
/// "app-pro". /// "app-pro".
/// </summary> /// </summary>
public const string TemplateName = "app-pro"; public const string TemplateName = "app-pro";
public const Theme DefaultTheme = Theme.LeptonX;
public AppProTemplate() public AppProTemplate()
: base(TemplateName) : base(TemplateName)

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.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 AppTemplate : AppTemplateBase public class AppTemplate : AppTemplateBase
{ {
@ -6,6 +8,8 @@ public class AppTemplate : AppTemplateBase
/// "app". /// "app".
/// </summary> /// </summary>
public const string TemplateName = "app"; public const string TemplateName = "app";
public const Theme DefaultTheme = Theme.LeptonXLite;
public AppTemplate() public AppTemplate()
: base(TemplateName) : base(TemplateName)

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs

@ -184,14 +184,14 @@ public abstract class AppTemplateBase : TemplateInfo
return; return;
} }
if (context.BuildArgs.Theme != Theme.LeptonXLite) if (context.BuildArgs.Theme != AppTemplate.DefaultTheme || context.BuildArgs.Theme != AppProTemplate.DefaultTheme)
{ {
steps.Add(new ChangeThemeStep()); steps.Add(new ChangeThemeStep());
RemoveLeptonXThemePackagesFromPackageJsonFiles(steps); RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, context.BuildArgs.Theme.Value);
} }
} }
private void RemoveLeptonXThemePackagesFromPackageJsonFiles(List<ProjectBuildPipelineStep> steps) private void RemoveLeptonXThemePackagesFromPackageJsonFiles(List<ProjectBuildPipelineStep> steps, Theme theme)
{ {
var packageJsonFilePaths = new List<string>() var packageJsonFilePaths = new List<string>()
{ {

30
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs

@ -0,0 +1,30 @@
using System;
using System.Text;
namespace Volo.Abp.Cli.Utils;
public static class ExceptionMessageHelper
{
public static string GetInvalidArgExceptionMessage(string args)
{
Check.NotNullOrEmpty(args, nameof(args), minLength: 2);
var exceptionMessageBuilder = new StringBuilder();
exceptionMessageBuilder.Append("The option you provided for ");
if (args.Contains(" "))
{
foreach (var arg in args.Split(' '))
{
exceptionMessageBuilder.Append(arg.ToPascalCase());
}
}
else
{
exceptionMessageBuilder.Append(args.ToPascalCase());
}
exceptionMessageBuilder.Append(" is invalid!");
return exceptionMessageBuilder.ToString();
}
}
Loading…
Cancel
Save