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);
}
var theme = uiFramework == UiFramework.None ? (Theme?)null : GetTheme(commandLineArgs);
var theme = uiFramework == UiFramework.None ? (Theme?)null : GetTheme(commandLineArgs, template);
if (theme.HasValue)
{
Logger.LogInformation("Theme: " + theme);
@ -329,7 +329,7 @@ public abstract class ProjectCreationCommandBase
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)
@ -423,7 +423,7 @@ public abstract class ProjectCreationCommandBase
case "oracle":
return DatabaseManagementSystem.Oracle;
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":
return MobileApp.ReactNative;
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":
return UiFramework.BlazorServer;
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);
switch (optionValue)
var theme = commandLineArgs.Options.GetOrNull(Options.Theme.Long);
theme = theme?.ToLower();
Theme GetAppTheme()
{
case null:
case "leptonx-lite":
return Theme.LeptonXLite;
case "basic":
return Theme.Basic;
default:
throw new CliUsageException("The option you provided for Theme is invalid!");
return theme switch
{
null => AppTemplate.DefaultTheme,
"leptonx-lite" => Theme.LeptonXLite,
"basic" => Theme.Basic,
_ => Theme.NotSpecified
};
}
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)

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

@ -1,7 +1,10 @@
namespace Volo.Abp.Cli.ProjectBuilding.Building;
public enum Theme
public enum Theme : byte
{
LeptonXLite = 0,
Basic = 1
NotSpecified = 0,
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
{
@ -6,6 +8,8 @@ public class AppProTemplate : AppTemplateBase
/// "app-pro".
/// </summary>
public const string TemplateName = "app-pro";
public const Theme DefaultTheme = Theme.LeptonX;
public AppProTemplate()
: 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
{
@ -6,6 +8,8 @@ public class AppTemplate : AppTemplateBase
/// "app".
/// </summary>
public const string TemplateName = "app";
public const Theme DefaultTheme = Theme.LeptonXLite;
public AppTemplate()
: 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;
}
if (context.BuildArgs.Theme != Theme.LeptonXLite)
if (context.BuildArgs.Theme != AppTemplate.DefaultTheme || context.BuildArgs.Theme != AppProTemplate.DefaultTheme)
{
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>()
{

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