diff --git a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj index 267acd2566..1c817ba12f 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj +++ b/framework/src/Volo.Abp.Cli.Core/Volo.Abp.Cli.Core.csproj @@ -28,10 +28,4 @@ - - - C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.SqlXml.dll - - - \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs index dd45adb94b..056f87f897 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs @@ -42,7 +42,6 @@ namespace Volo.Abp.Cli Logger.LogInformation("ABP CLI (https://abp.io)"); await CheckCliVersionAsync(); - CheckDependencies(); var commandLineArgs = CommandLineArgumentParser.Parse(args); var commandType = CommandSelector.Select(commandLineArgs); @@ -66,32 +65,6 @@ namespace Volo.Abp.Cli } } - private void CheckDependencies() - { - var installedNpmPackages = CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0"); - - if (!installedNpmPackages.Contains(" yarn@")) - { - InstallYarn(); - } - if (!installedNpmPackages.Contains(" gulp@")) - { - InstallGulp(); - } - } - - private void InstallYarn() - { - Logger.LogInformation("Installing yarn..."); - CmdHelper.RunCmd("npm install yarn -g"); - } - - private void InstallGulp() - { - Logger.LogInformation("Installing gulp..."); - CmdHelper.RunCmd("npm install gulp -g"); - } - private async Task CheckCliVersionAsync() { var assembly = typeof(CliService).Assembly; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs new file mode 100644 index 0000000000..8140b73b64 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs @@ -0,0 +1,49 @@ +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Cli.Utils; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class NpmGlobalPackagesChecker : ITransientDependency + { + public ILogger Logger { get; set; } + + public NpmGlobalPackagesChecker(PackageJsonFileFinder packageJsonFileFinder) + { + Logger = NullLogger.Instance; + } + + public void Check() + { + var installedNpmPackages = GetInstalledNpmPackages(); + + if (!installedNpmPackages.Contains(" yarn@")) + { + InstallYarn(); + } + if (!installedNpmPackages.Contains(" gulp@")) + { + InstallGulp(); + } + } + + protected virtual string GetInstalledNpmPackages() + { + Logger.LogInformation("Checking installed npm global packages..."); + return CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0"); + } + + protected virtual void InstallYarn() + { + Logger.LogInformation("Installing yarn..."); + CmdHelper.RunCmd("npm install yarn -g"); + } + + protected virtual void InstallGulp() + { + Logger.LogInformation("Installing gulp..."); + CmdHelper.RunCmd("npm install gulp -g"); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs index 4d647d015e..bad90be5c3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs @@ -18,12 +18,14 @@ namespace Volo.Abp.Cli.ProjectModification public ILogger Logger { get; set; } private readonly PackageJsonFileFinder _packageJsonFileFinder; + private readonly NpmGlobalPackagesChecker _npmGlobalPackagesChecker; private readonly Dictionary _fileVersionStorage = new Dictionary(); - public NpmPackagesUpdater(PackageJsonFileFinder packageJsonFileFinder) + public NpmPackagesUpdater(PackageJsonFileFinder packageJsonFileFinder, NpmGlobalPackagesChecker npmGlobalPackagesChecker) { _packageJsonFileFinder = packageJsonFileFinder; + _npmGlobalPackagesChecker = npmGlobalPackagesChecker; Logger = NullLogger.Instance; } @@ -32,11 +34,16 @@ namespace Volo.Abp.Cli.ProjectModification { var fileList = _packageJsonFileFinder.Find(rootDirectory); - foreach (var file in fileList) + if (fileList.Any()) { - UpdatePackagesInFile(file); + _npmGlobalPackagesChecker.Check(); - RunYarnAndGulp(file); + foreach (var file in fileList) + { + UpdatePackagesInFile(file); + + RunYarnAndGulp(file); + } } } 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 840f62741c..4366470cfe 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 @@ -21,8 +21,9 @@ namespace Volo.Abp.Cli.ProjectModification protected ProjectNugetPackageAdder ProjectNugetPackageAdder { get; } protected DbContextFileBuilderConfigureAdder DbContextFileBuilderConfigureAdder { get; } protected EfCoreMigrationAdder EfCoreMigrationAdder { get; } - protected ProjectNpmPackageAdder ProjectNpmPackageAdder { get; } protected DerivedClassFinder DerivedClassFinder { get; } + protected ProjectNpmPackageAdder ProjectNpmPackageAdder { get; } + protected NpmGlobalPackagesChecker NpmGlobalPackagesChecker { get; } public SolutionModuleAdder( IJsonSerializer jsonSerializer, @@ -30,14 +31,16 @@ namespace Volo.Abp.Cli.ProjectModification DbContextFileBuilderConfigureAdder dbContextFileBuilderConfigureAdder, EfCoreMigrationAdder efCoreMigrationAdder, DerivedClassFinder derivedClassFinder, - ProjectNpmPackageAdder projectNpmPackageAdder) + ProjectNpmPackageAdder projectNpmPackageAdder, + NpmGlobalPackagesChecker npmGlobalPackagesChecker) { - EfCoreMigrationAdder = efCoreMigrationAdder; - DerivedClassFinder = derivedClassFinder; JsonSerializer = jsonSerializer; ProjectNugetPackageAdder = projectNugetPackageAdder; DbContextFileBuilderConfigureAdder = dbContextFileBuilderConfigureAdder; + EfCoreMigrationAdder = efCoreMigrationAdder; + DerivedClassFinder = derivedClassFinder; ProjectNpmPackageAdder = projectNpmPackageAdder; + NpmGlobalPackagesChecker = npmGlobalPackagesChecker; Logger = NullLogger.Instance; } @@ -72,6 +75,8 @@ namespace Volo.Abp.Cli.ProjectModification var targetProjects = ProjectFinder.FindNpmTargetProjectFile(projectFiles); if (targetProjects.Any()) { + NpmGlobalPackagesChecker.Check(); + foreach (var targetProject in targetProjects) { foreach (var npmPackage in module.NpmPackages.Where(p => p.ApplicationType.HasFlag(NpmApplicationType.Mvc))) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs index 2e7a0da442..0c7c9fc6c0 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs @@ -61,7 +61,7 @@ namespace Volo.Abp.Cli.Utils { if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { - //TODO: Test this. it should work for both operaion systems. + //TODO: Test this. it should work for both operation systems. return "/bin/bash"; }