From 52c8e1852ab14669251f1827ffd68f42f940b060 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Wed, 23 Sep 2020 11:17:06 +0300 Subject: [PATCH] Cli: add-module command should add angular npm packages resolves https://github.com/abpframework/abp/issues/5581 --- .../ProjectNpmPackageAdder.cs | 12 ++++++-- .../SolutionModuleAdder.cs | 29 +++++++++++++++++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs index eeb19e8621..7ed15f7b86 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs @@ -17,21 +17,29 @@ namespace Volo.Abp.Cli.ProjectModification Logger = NullLogger.Instance; } - public Task AddAsync(string directory, NpmPackageInfo npmPackage) + public Task AddAsync(string directory, NpmPackageInfo npmPackage, bool skipGulpCommand = false) { var packageJsonFilePath = Path.Combine(directory, "package.json"); - if (!File.Exists(packageJsonFilePath) || File.ReadAllText(packageJsonFilePath).Contains($"\"{npmPackage.Name}\"")) + if (!File.Exists(packageJsonFilePath) || + File.ReadAllText(packageJsonFilePath).Contains($"\"{npmPackage.Name}\"")) { return Task.CompletedTask; } Logger.LogInformation($"Installing '{npmPackage.Name}' package to the project '{packageJsonFilePath}'..."); + + using (DirectoryHelper.ChangeCurrentDirectory(directory)) { Logger.LogInformation("yarn add " + npmPackage.Name); CmdHelper.RunCmd("yarn add " + npmPackage.Name); + if (skipGulpCommand) + { + return Task.CompletedTask; + } + Logger.LogInformation("gulp"); CmdHelper.RunCmd("gulp"); } 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 1b006c25b6..e4c4c655f7 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 @@ -87,14 +87,37 @@ namespace Volo.Abp.Cli.ProjectModification await DownloadSourceCodesToSolutionFolder(module, modulesFolderInSolution, version); await SolutionFileModifier.AddModuleToSolutionFileAsync(module, solutionFile); await NugetPackageToLocalReferenceConverter.Convert(module, solutionFile); - - await HandleAngularProject(modulesFolderInSolution, solutionFile); + await AddAngularSourceCode(modulesFolderInSolution, solutionFile); + } + else + { + await AddAngularPackages(solutionFile, module); } ModifyDbContext(projectFiles, module, startupProject, skipDbMigrations); } - private async Task HandleAngularProject(string modulesFolderInSolution, string solutionFilePath) + private async Task AddAngularPackages(string solutionFilePath, ModuleWithMastersInfo module) + { + var angularPath = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(solutionFilePath)), "angular"); + + if (!Directory.Exists(angularPath)) + { + return; + } + + var angularPackages = module.NpmPackages?.Where(p => p.ApplicationType.HasFlag(NpmApplicationType.Angular)).ToList(); + + if (!angularPackages.IsNullOrEmpty()) + { + foreach (var npmPackage in angularPackages) + { + await ProjectNpmPackageAdder.AddAsync(angularPath, npmPackage, true); + } + } + } + + private async Task AddAngularSourceCode(string modulesFolderInSolution, string solutionFilePath) { var angularPath = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(solutionFilePath)), "angular");