From 4ba905c2f1ed629f2d713aeab90c35f6eaa4bb9d Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 8 Dec 2020 13:20:13 +0300 Subject: [PATCH 1/2] CLI: Run abp bundle on add-module for Blazor UI resolves https://github.com/abpframework/abp/issues/6468 --- .../ProjectNugetPackageAdder.cs | 27 +++++++++++++++---- .../SolutionModuleAdder.cs | 24 ++++++++++++++++- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs index de25b11da7..3a71efe828 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs @@ -7,6 +7,8 @@ using System.Threading.Tasks; using System.Xml; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.Commands; using Volo.Abp.Cli.Http; using Volo.Abp.Cli.ProjectBuilding; using Volo.Abp.Cli.Utils; @@ -25,19 +27,22 @@ namespace Volo.Abp.Cli.ProjectModification protected DerivedClassFinder ModuleClassFinder { get; } protected ModuleClassDependcyAdder ModuleClassDependcyAdder { get; } protected IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; } + public BundleCommand BundleCommand { get; } public ProjectNugetPackageAdder( IJsonSerializer jsonSerializer, ProjectNpmPackageAdder npmPackageAdder, DerivedClassFinder moduleClassFinder, ModuleClassDependcyAdder moduleClassDependcyAdder, - IRemoteServiceExceptionHandler remoteServiceExceptionHandler) + IRemoteServiceExceptionHandler remoteServiceExceptionHandler, + BundleCommand bundleCommand) { JsonSerializer = jsonSerializer; NpmPackageAdder = npmPackageAdder; ModuleClassFinder = moduleClassFinder; ModuleClassDependcyAdder = moduleClassDependcyAdder; RemoteServiceExceptionHandler = remoteServiceExceptionHandler; + BundleCommand = bundleCommand; Logger = NullLogger.Instance; } @@ -50,14 +55,14 @@ namespace Volo.Abp.Cli.ProjectModification ); } - public Task AddAsync(string projectFile, NugetPackageInfo package, string version = null, + public async Task AddAsync(string projectFile, NugetPackageInfo package, string version = null, bool useDotnetCliToInstall = true) { var projectFileContent = File.ReadAllText(projectFile); if (projectFileContent.Contains($"\"{package.Name}\"")) { - return Task.CompletedTask; + return; } if (version == null) @@ -94,11 +99,14 @@ namespace Volo.Abp.Cli.ProjectModification } ModuleClassDependcyAdder.Add(moduleFiles.First(), package.ModuleClass); + } - Logger.LogInformation("Successfully installed."); + if (package.Target == NuGetPackageTarget.Blazor) + { + await RunBundleForBlazorAsync(projectFile); } - return Task.CompletedTask; + Logger.LogInformation("Successfully installed."); } private Task AddUsingDotnetCli(NugetPackageInfo package, string version = null) @@ -185,5 +193,14 @@ namespace Volo.Abp.Cli.ProjectModification return JsonSerializer.Deserialize(responseContent); } } + + protected virtual async Task RunBundleForBlazorAsync(string projectFile) + { + var args = new CommandLineArgs("bundle"); + + args.Options.Add(BundleCommand.Options.WorkingDirectory.Short, Path.GetDirectoryName(projectFile)); + + await BundleCommand.ExecuteAsync(args); + } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index 3bcdc34bc9..cd051dc85a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Net; using System.Threading.Tasks; using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.Bundling; using Volo.Abp.Cli.Commands; using Volo.Abp.Cli.Commands.Services; using Volo.Abp.Cli.Http; @@ -35,6 +36,7 @@ namespace Volo.Abp.Cli.ProjectModification public NugetPackageToLocalReferenceConverter NugetPackageToLocalReferenceConverter { get; } public AngularModuleSourceCodeAdder AngularModuleSourceCodeAdder { get; } public NewCommand NewCommand { get; } + public BundleCommand BundleCommand { get; } public SolutionModuleAdder( IJsonSerializer jsonSerializer, @@ -49,7 +51,8 @@ namespace Volo.Abp.Cli.ProjectModification SolutionFileModifier solutionFileModifier, NugetPackageToLocalReferenceConverter nugetPackageToLocalReferenceConverter, AngularModuleSourceCodeAdder angularModuleSourceCodeAdder, - NewCommand newCommand) + NewCommand newCommand, + BundleCommand bundleCommand) { JsonSerializer = jsonSerializer; ProjectNugetPackageAdder = projectNugetPackageAdder; @@ -64,6 +67,7 @@ namespace Volo.Abp.Cli.ProjectModification NugetPackageToLocalReferenceConverter = nugetPackageToLocalReferenceConverter; AngularModuleSourceCodeAdder = angularModuleSourceCodeAdder; NewCommand = newCommand; + BundleCommand = bundleCommand; Logger = NullLogger.Instance; } @@ -118,9 +122,27 @@ namespace Volo.Abp.Cli.ProjectModification await AddAngularPackages(solutionFile, module); } + await RunBundleForBlazorAsync(projectFiles, module); + ModifyDbContext(projectFiles, module, startupProject, skipDbMigrations); } + private async Task RunBundleForBlazorAsync(string[] projectFiles, ModuleWithMastersInfo module) + { + var blazorProject = projectFiles.FirstOrDefault(f => f.EndsWith(".Blazor.csproj")); + + if (blazorProject == null || !module.NugetPackages.Any(np=> np.Target == NuGetPackageTarget.Blazor)) + { + return; + } + + var args = new CommandLineArgs("bundle"); + + args.Options.Add(BundleCommand.Options.WorkingDirectory.Short, Path.GetDirectoryName(blazorProject)); + + await BundleCommand.ExecuteAsync(args); + } + private async Task RemoveUnnecessaryProjectsAsync(string solutionDirectory, ModuleWithMastersInfo module, string[] projectFiles) { From 9ed3b47cef69cb4d12067b5e4c300a60221fd5e6 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 8 Dec 2020 16:02:56 +0300 Subject: [PATCH 2/2] Cli add-package& add-module RunBundleForBlazorAsync: Added ForceBuild suggestion from @ilkayilknur https://github.com/abpframework/abp/pull/6533#issuecomment-740535590 --- .../Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs | 1 + .../Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs index 3a71efe828..ee736f3aa0 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs @@ -199,6 +199,7 @@ namespace Volo.Abp.Cli.ProjectModification var args = new CommandLineArgs("bundle"); args.Options.Add(BundleCommand.Options.WorkingDirectory.Short, Path.GetDirectoryName(projectFile)); + args.Options.Add(BundleCommand.Options.ForceBuild.Short, string.Empty); await BundleCommand.ExecuteAsync(args); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index cd051dc85a..1f8bca7e08 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -139,6 +139,7 @@ namespace Volo.Abp.Cli.ProjectModification var args = new CommandLineArgs("bundle"); args.Options.Add(BundleCommand.Options.WorkingDirectory.Short, Path.GetDirectoryName(blazorProject)); + args.Options.Add(BundleCommand.Options.ForceBuild.Short, string.Empty); await BundleCommand.ExecuteAsync(args); }