Browse Source

CLI: Make related configurations for theme selection (Angular UI)

pull/14533/head
Engincan VESKE 4 years ago
parent
commit
88fb380944
  1. 19
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Args/AngularThemeConfigurationArgs.cs
  2. 7
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs
  3. 18
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
  4. 30
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularThemeConfigurer.cs

19
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Args/AngularThemeConfigurationArgs.cs

@ -0,0 +1,19 @@
using Volo.Abp.Cli.ProjectBuilding.Building;
namespace Volo.Abp.Cli.Args;
public class AngularThemeConfigurationArgs
{
public Theme Theme { get; }
public string ProjectName { get; }
public string AngularFolderPath { get; }
public AngularThemeConfigurationArgs(Theme theme, string projectName, string angularFolderPath)
{
Theme = theme;
ProjectName = projectName;
AngularFolderPath = angularFolderPath;
}
}

7
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs

@ -40,7 +40,8 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien
ILocalEventBus eventBus,
IBundlingService bundlingService,
ITemplateInfoProvider templateInfoProvider,
TemplateProjectBuilder templateProjectBuilder) :
TemplateProjectBuilder templateProjectBuilder,
AngularThemeConfigurer angularThemeConfigurer) :
base(connectionStringProvider,
solutionPackageVersionFinder,
cmdHelper,
@ -50,7 +51,8 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien
initialMigrationCreator,
themePackageAdder,
eventBus,
bundlingService)
bundlingService,
angularThemeConfigurer)
{
TemplateInfoProvider = templateInfoProvider;
TemplateProjectBuilder = templateProjectBuilder;
@ -95,6 +97,7 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien
Logger.LogInformation($"'{projectName}' has been successfully created to '{projectArgs.OutputFolder}'");
ConfigureAngularJsonForThemeSelection(projectArgs);
ConfigureNpmPackagesForTheme(projectArgs);
await RunGraphBuildForMicroserviceServiceTemplate(projectArgs);
await CreateInitialMigrationsAsync(projectArgs);

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

@ -38,6 +38,8 @@ public abstract class ProjectCreationCommandBase
public ILogger<NewCommand> Logger { get; set; }
public ThemePackageAdder ThemePackageAdder { get; }
public AngularThemeConfigurer AngularThemeConfigurer { get; }
public ProjectCreationCommandBase(
ConnectionStringProvider connectionStringProvider,
@ -49,7 +51,8 @@ public abstract class ProjectCreationCommandBase
InitialMigrationCreator initialMigrationCreator,
ThemePackageAdder themePackageAdder,
ILocalEventBus eventBus,
IBundlingService bundlingService)
IBundlingService bundlingService,
AngularThemeConfigurer angularThemeConfigurer)
{
_bundlingService = bundlingService;
ConnectionStringProvider = connectionStringProvider;
@ -61,6 +64,7 @@ public abstract class ProjectCreationCommandBase
InitialMigrationCreator = initialMigrationCreator;
EventBus = eventBus;
ThemePackageAdder = themePackageAdder;
AngularThemeConfigurer = angularThemeConfigurer;
Logger = NullLogger<NewCommand>.Instance;
}
@ -667,6 +671,18 @@ public abstract class ProjectCreationCommandBase
}
}
protected void ConfigureAngularJsonForThemeSelection(ProjectBuildArgs projectArgs)
{
//TODO: do not run if the theme is default
if (projectArgs.Theme.HasValue && projectArgs.UiFramework == UiFramework.Angular)
{
AngularThemeConfigurer.Configure(new AngularThemeConfigurationArgs(
theme: projectArgs.Theme.Value,
projectName: projectArgs.SolutionName.FullName,
angularFolderPath: projectArgs.OutputFolder + Path.DirectorySeparatorChar + "angular"));
}
}
public static class Options
{
public static class Template

30
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularThemeConfigurer.cs

@ -0,0 +1,30 @@
using System;
using Volo.Abp.Cli.Args;
using Volo.Abp.Cli.Utils;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Cli.ProjectModification;
public class AngularThemeConfigurer : ITransientDependency
{
private readonly ICmdHelper _cmdHelper;
public AngularThemeConfigurer(ICmdHelper cmdHelper)
{
_cmdHelper = cmdHelper;
}
public void Configure(AngularThemeConfigurationArgs args)
{
if (args.ProjectName.IsNullOrEmpty() || args.AngularFolderPath.IsNullOrEmpty())
{
return;
}
var command = "npx ng g @abp/ng.schematics:change-theme " +
$"--name {(int)args.Theme} " +
$"--target-project {args.ProjectName}";
_cmdHelper.RunCmd(command, workingDirectory: args.AngularFolderPath);
}
}
Loading…
Cancel
Save