From a6477782b1b9c78073f5f2c4c1f41b2f573d441c Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Fri, 27 Aug 2021 14:39:48 +0300 Subject: [PATCH] Moved ICmdHelper to CLI.Core --- .../Cli/Build/DefaultDotNetProjectBuilder.cs | 7 ++ .../Volo/Abp/Cli/CliService.cs | 11 +- .../CreateMigrationAndRunMigratorCommand.cs | 12 +- .../Abp/Cli/Commands/GenerateProxyCommand.cs | 6 +- .../Volo/Abp/Cli/Commands/NewCommand.cs | 5 +- .../Commands/ProjectCreationCommandBase.cs | 4 +- .../Volo/Abp/Cli/Commands/ProxyCommandBase.cs | 4 +- .../Abp/Cli/Commands/RemoveProxyCommand.cs | 10 +- .../Volo/Abp/Cli/Commands/SuiteCommand.cs | 22 ++-- .../Volo/Abp/Cli/LIbs/InstallLibsService.cs | 4 +- .../EfCoreMigrationManager.cs | 4 +- .../NpmGlobalPackagesChecker.cs | 6 +- .../ProjectModification/NpmPackagesUpdater.cs | 5 +- .../ProjectNpmPackageAdder.cs | 7 +- .../ProjectNugetPackageAdder.cs | 5 +- .../SolutionModuleAdder.cs | 7 +- .../Volo/Abp/Cli/Utils/CmdHelper.cs | 46 +++++--- .../Volo/Abp/Cli/Utils/ICmdHelper.cs | 24 ++++ .../Volo/Abp/Studio/Helpers/CmdHelper.cs | 103 ------------------ .../Volo/Abp/Studio/Helpers/ICmdHelper.cs | 9 -- .../Studio/Nuget/NugetPackageCacheManager.cs | 1 + .../Abp/Studio/Nuget/NugetSourceCodeStore.cs | 1 + 22 files changed, 139 insertions(+), 164 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs delete mode 100644 studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/CmdHelper.cs delete mode 100644 studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/ICmdHelper.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs index dba7cebb86..72b1cd2e6d 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs @@ -9,6 +9,13 @@ namespace Volo.Abp.Cli.Build { public class DefaultDotNetProjectBuilder : IDotNetProjectBuilder, ITransientDependency { + public ICmdHelper CmdHelper { get; } + + public DefaultDotNetProjectBuilder(ICmdHelper cmdHelper) + { + CmdHelper = cmdHelper; + } + public List BuildProjects(List projects, string arguments) { var builtProjects = new ConcurrentBag(); 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 a418ceba52..f06fcb6d2d 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 @@ -24,17 +24,20 @@ namespace Volo.Abp.Cli protected ICommandSelector CommandSelector { get; } protected IServiceScopeFactory ServiceScopeFactory { get; } protected NuGetService NuGetService { get; } + public ICmdHelper CmdHelper { get; } public CliService( ICommandLineArgumentParser commandLineArgumentParser, ICommandSelector commandSelector, IServiceScopeFactory serviceScopeFactory, - NuGetService nugetService) + NuGetService nugetService, + ICmdHelper cmdHelper) { CommandLineArgumentParser = commandLineArgumentParser; CommandSelector = commandSelector; ServiceScopeFactory = serviceScopeFactory; NuGetService = nugetService; + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } @@ -42,7 +45,7 @@ namespace Volo.Abp.Cli public async Task RunAsync(string[] args) { Logger.LogInformation("ABP CLI (https://abp.io)"); - + var commandLineArgs = CommandLineArgumentParser.Parse(args); #if !DEBUG @@ -147,7 +150,7 @@ namespace Volo.Abp.Cli await RunInternalAsync(args); } } - + private async Task RunInternalAsync(CommandLineArgs commandLineArgs) { var commandType = CommandSelector.Select(commandLineArgs); @@ -203,7 +206,7 @@ namespace Volo.Abp.Cli { SemanticVersion currentCliVersion = default; - var consoleOutput = new StringReader(CmdHelper.RunCmdAndGetOutput($"dotnet tool list -g")); + var consoleOutput = new StringReader(CmdHelper.RunCmdAndGetOutput($"dotnet tool list -g", out int exitCode)); string line; while ((line = await consoleOutput.ReadLineAsync()) != null) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs index 7b9fbd35fe..89e9ea7904 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs @@ -12,10 +12,12 @@ namespace Volo.Abp.Cli.Commands { public class CreateMigrationAndRunMigratorCommand : IConsoleCommand, ITransientDependency { + public ICmdHelper CmdHelper { get; } public ILogger Logger { get; set; } - public CreateMigrationAndRunMigratorCommand() + public CreateMigrationAndRunMigratorCommand(ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } @@ -98,7 +100,7 @@ namespace Volo.Abp.Cli.Commands return Path.GetFileName(dbContext).RemovePostFix(".cs"); } - private static string AddMigrationAndGetOutput(string dbMigrationsFolder, string dbContext, string outputDirectory) + private string AddMigrationAndGetOutput(string dbMigrationsFolder, string dbContext, string outputDirectory) { var dbContextOption = string.IsNullOrWhiteSpace(dbContext) ? string.Empty @@ -107,12 +109,12 @@ namespace Volo.Abp.Cli.Commands var addMigrationCmd = $"cd \"{dbMigrationsFolder}\" && " + $"dotnet ef migrations add Initial --output-dir {outputDirectory} {dbContextOption}"; - return CmdHelper.RunCmdAndGetOutput(addMigrationCmd); + return CmdHelper.RunCmdAndGetOutput(addMigrationCmd, out int exitCode); } - private static bool IsDotNetEfToolInstalled() + private bool IsDotNetEfToolInstalled() { - var output = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g"); + var output = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g", out int exitCode); return output.Contains("dotnet-ef"); } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs index b56dd19cb0..28cbd3f9dd 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/GenerateProxyCommand.cs @@ -1,3 +1,5 @@ +using Volo.Abp.Cli.Utils; + namespace Volo.Abp.Cli.Commands { public class GenerateProxyCommand : ProxyCommandBase @@ -8,8 +10,8 @@ namespace Volo.Abp.Cli.Commands protected override string SchematicsCommandName => "proxy-add"; - public GenerateProxyCommand(CliService cliService) - : base(cliService) + public GenerateProxyCommand(CliService cliService, ICmdHelper cmdHelper) + : base(cliService, cmdHelper) { } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs index c8bc508983..aa31bf62c4 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs @@ -35,8 +35,9 @@ namespace Volo.Abp.Cli.Commands public NewCommand(TemplateProjectBuilder templateProjectBuilder , ITemplateInfoProvider templateInfoProvider, - ConnectionStringProvider connectionStringProvider) - : base(connectionStringProvider) + ConnectionStringProvider connectionStringProvider, + ICmdHelper cmdHelper) + : base(connectionStringProvider, cmdHelper) { TemplateProjectBuilder = templateProjectBuilder; TemplateInfoProvider = templateInfoProvider; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 927019f566..7278a6ee79 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -18,11 +18,13 @@ namespace Volo.Abp.Cli.Commands public abstract class ProjectCreationCommandBase { public ConnectionStringProvider ConnectionStringProvider { get; } + public ICmdHelper CmdHelper { get; } public ILogger Logger { get; set; } - public ProjectCreationCommandBase(ConnectionStringProvider connectionStringProvider) + public ProjectCreationCommandBase(ConnectionStringProvider connectionStringProvider, ICmdHelper cmdHelper) { ConnectionStringProvider = connectionStringProvider; + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs index 1745db2fd2..7d50a3cb07 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProxyCommandBase.cs @@ -15,15 +15,17 @@ namespace Volo.Abp.Cli.Commands public abstract class ProxyCommandBase : IConsoleCommand, ITransientDependency { public CliService CliService { get; } + public ICmdHelper CmdHelper { get; } public ILogger Logger { get; set; } protected abstract string CommandName { get; } protected abstract string SchematicsCommandName { get; } - public ProxyCommandBase(CliService cliService) + public ProxyCommandBase(CliService cliService, ICmdHelper cmdHelper) { CliService = cliService; + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/RemoveProxyCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/RemoveProxyCommand.cs index 7c55c0cf71..8d28bc4df6 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/RemoveProxyCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/RemoveProxyCommand.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Cli.Commands +using Volo.Abp.Cli.Utils; + +namespace Volo.Abp.Cli.Commands { public class RemoveProxyCommand : ProxyCommandBase { @@ -8,8 +10,10 @@ protected override string SchematicsCommandName => "proxy-remove"; - public RemoveProxyCommand(CliService cliService) - : base(cliService) + public RemoveProxyCommand( + CliService cliService, + ICmdHelper cmdHelper) + : base(cliService, cmdHelper) { } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs index 34cde45265..d81d016ac8 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs @@ -15,13 +15,15 @@ namespace Volo.Abp.Cli.Commands { public class SuiteCommand : IConsoleCommand, ITransientDependency { + public ICmdHelper CmdHelper { get; } private readonly AbpNuGetIndexUrlService _nuGetIndexUrlService; private readonly NuGetService _nuGetService; private const string SuitePackageName = "Volo.Abp.Suite"; public ILogger Logger { get; set; } - public SuiteCommand(AbpNuGetIndexUrlService nuGetIndexUrlService, NuGetService nuGetService) + public SuiteCommand(AbpNuGetIndexUrlService nuGetIndexUrlService, NuGetService nuGetService, ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; _nuGetIndexUrlService = nuGetIndexUrlService; _nuGetService = nuGetService; Logger = NullLogger.Instance; @@ -71,7 +73,7 @@ namespace Volo.Abp.Cli.Commands private string GetCurrentSuiteVersion() { - var dotnetToolList = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g"); + var dotnetToolList = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g", out int exitCode); var suiteLine = dotnetToolList.Split(Environment.NewLine) .FirstOrDefault(l => l.ToLower().StartsWith("volo.abp.suite ")); @@ -127,11 +129,11 @@ namespace Volo.Abp.Cli.Commands versionOption = $" --version {version}"; } - var result = CmdHelper.RunCmd( - $"dotnet tool install {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g" + CmdHelper.RunCmd( + $"dotnet tool install {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g", out int exitCode ); - if (result == 0) + if (exitCode == 0) { Logger.LogInformation("ABP Suite has been successfully installed."); Logger.LogInformation("You can run it with the CLI command \"abp suite\""); @@ -197,11 +199,11 @@ namespace Volo.Abp.Cli.Commands versionOption = $" --version {version}"; } - var result = CmdHelper.RunCmd( - $"dotnet tool update {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g" + CmdHelper.RunCmd( + $"dotnet tool update {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g", out int exitCode ); - if (result != 0) + if (exitCode != 0) { ShowSuiteManualUpdateCommand(); } @@ -230,7 +232,7 @@ namespace Volo.Abp.Cli.Commands Logger.LogError("dotnet tool update -g Volo.Abp.Suite --add-source https://nuget.abp.io//v3/index.json"); } - private static void RemoveSuite() + private void RemoveSuite() { CmdHelper.RunCmd("dotnet tool uninstall " + SuitePackageName + " -g"); } @@ -275,7 +277,7 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine(" abp suite"); sb.AppendLine(" abp suite install"); sb.AppendLine(" abp suite install --preview"); - sb.AppendLine(" abp suite install --version 4.2.2"); + sb.AppendLine(" abp suite install --version 4.2.2"); sb.AppendLine(" abp suite update"); sb.AppendLine(" abp suite update --preview"); sb.AppendLine(" abp suite remove"); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs index 5379c62aed..421cae3d3c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs @@ -16,14 +16,16 @@ namespace Volo.Abp.Cli.LIbs { public class InstallLibsService : IInstallLibsService, ITransientDependency { + public ICmdHelper CmdHelper { get; } public const string LibsDirectory = "./wwwroot/libs"; public ILogger Logger { get; set; } private readonly IJsonSerializer _jsonSerializer; - public InstallLibsService(IJsonSerializer jsonSerializer) + public InstallLibsService(IJsonSerializer jsonSerializer, ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; _jsonSerializer = jsonSerializer; Logger = NullLogger.Instance; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs index 05996b90d7..8bc0c2d05e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs @@ -10,10 +10,12 @@ namespace Volo.Abp.Cli.ProjectModification { public class EfCoreMigrationManager : ITransientDependency { + public ICmdHelper CmdHelper { get; } public ILogger Logger { get; set; } - public EfCoreMigrationManager() + public EfCoreMigrationManager(ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } 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 index 7c8ba63e29..7df511592b 100644 --- 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 @@ -7,10 +7,12 @@ namespace Volo.Abp.Cli.ProjectModification { public class NpmGlobalPackagesChecker : ITransientDependency { + public ICmdHelper CmdHelper { get; } public ILogger Logger { get; set; } - public NpmGlobalPackagesChecker() + public NpmGlobalPackagesChecker(ICmdHelper cmdHelper) { + CmdHelper = cmdHelper; Logger = NullLogger.Instance; } @@ -31,7 +33,7 @@ namespace Volo.Abp.Cli.ProjectModification protected virtual string GetInstalledNpmPackages() { Logger.LogInformation("Checking installed npm global packages..."); - return CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0 --silent"); + return CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0 --silent", out int exitCode); } protected virtual void InstallYarn() 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 bf23bc3786..4530b59142 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 @@ -23,6 +23,7 @@ namespace Volo.Abp.Cli.ProjectModification { public ILogger Logger { get; set; } protected ICancellationTokenProvider CancellationTokenProvider { get; } + public ICmdHelper CmdHelper { get; } private readonly PackageJsonFileFinder _packageJsonFileFinder; private readonly NpmGlobalPackagesChecker _npmGlobalPackagesChecker; @@ -33,11 +34,13 @@ namespace Volo.Abp.Cli.ProjectModification PackageJsonFileFinder packageJsonFileFinder, NpmGlobalPackagesChecker npmGlobalPackagesChecker, ICancellationTokenProvider cancellationTokenProvider, - CliHttpClientFactory cliHttpClientFactory) + CliHttpClientFactory cliHttpClientFactory, + ICmdHelper cmdHelper) { _packageJsonFileFinder = packageJsonFileFinder; _npmGlobalPackagesChecker = npmGlobalPackagesChecker; CancellationTokenProvider = cancellationTokenProvider; + CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; } 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 3c283319ac..3baab9ed98 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 @@ -26,6 +26,7 @@ namespace Volo.Abp.Cli.ProjectModification public SourceCodeDownloadService SourceCodeDownloadService { get; } public AngularSourceCodeAdder AngularSourceCodeAdder { get; } public IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; } + public ICmdHelper CmdHelper { get; } private readonly CliHttpClientFactory _cliHttpClientFactory; public ILogger Logger { get; set; } @@ -33,12 +34,14 @@ namespace Volo.Abp.Cli.ProjectModification IJsonSerializer jsonSerializer, SourceCodeDownloadService sourceCodeDownloadService, AngularSourceCodeAdder angularSourceCodeAdder, - IRemoteServiceExceptionHandler remoteServiceExceptionHandler) + IRemoteServiceExceptionHandler remoteServiceExceptionHandler, + ICmdHelper cmdHelper) { JsonSerializer = jsonSerializer; SourceCodeDownloadService = sourceCodeDownloadService; AngularSourceCodeAdder = angularSourceCodeAdder; RemoteServiceExceptionHandler = remoteServiceExceptionHandler; + CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; } @@ -202,4 +205,4 @@ namespace Volo.Abp.Cli.ProjectModification } } } -} \ No newline at end of file +} 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 6d88ecb3ec..f16bc2ac6c 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 @@ -25,6 +25,7 @@ namespace Volo.Abp.Cli.ProjectModification public BundleCommand BundleCommand { get; } public SourceCodeDownloadService SourceCodeDownloadService { get; } public SolutionFileModifier SolutionFileModifier { get; } + public ICmdHelper CmdHelper { get; } protected IJsonSerializer JsonSerializer { get; } protected ProjectNpmPackageAdder NpmPackageAdder { get; } @@ -43,7 +44,8 @@ namespace Volo.Abp.Cli.ProjectModification BundleCommand bundleCommand, CliHttpClientFactory cliHttpClientFactory, SourceCodeDownloadService sourceCodeDownloadService, - SolutionFileModifier solutionFileModifier) + SolutionFileModifier solutionFileModifier, + ICmdHelper cmdHelper) { JsonSerializer = jsonSerializer; NpmPackageAdder = npmPackageAdder; @@ -53,6 +55,7 @@ namespace Volo.Abp.Cli.ProjectModification BundleCommand = bundleCommand; SourceCodeDownloadService = sourceCodeDownloadService; SolutionFileModifier = solutionFileModifier; + CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; } 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 62d490d64d..c2b417398a 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 @@ -30,6 +30,7 @@ namespace Volo.Abp.Cli.ProjectModification public AngularSourceCodeAdder AngularSourceCodeAdder { get; } public NewCommand NewCommand { get; } public BundleCommand BundleCommand { get; } + public ICmdHelper CmdHelper { get; } protected IJsonSerializer JsonSerializer { get; } protected ProjectNugetPackageAdder ProjectNugetPackageAdder { get; } @@ -58,7 +59,8 @@ namespace Volo.Abp.Cli.ProjectModification AngularSourceCodeAdder angularSourceCodeAdder, NewCommand newCommand, BundleCommand bundleCommand, - CliHttpClientFactory cliHttpClientFactory) + CliHttpClientFactory cliHttpClientFactory, + ICmdHelper cmdHelper) { JsonSerializer = jsonSerializer; ProjectNugetPackageAdder = projectNugetPackageAdder; @@ -74,6 +76,7 @@ namespace Volo.Abp.Cli.ProjectModification AngularSourceCodeAdder = angularSourceCodeAdder; NewCommand = newCommand; BundleCommand = bundleCommand; + CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; } @@ -620,7 +623,7 @@ namespace Volo.Abp.Cli.ProjectModification if (!string.IsNullOrEmpty(dbMigratorProject)) { - CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(dbMigratorProject) + "\" && dotnet run"); + CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(dbMigratorProject) + "\" && dotnet run", out int exitCode); } } 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 07b470225a..72b9ba1a90 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 @@ -1,14 +1,15 @@ using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; +using Volo.Abp.DependencyInjection; namespace Volo.Abp.Cli.Utils { - public static class CmdHelper + public class CmdHelper : ICmdHelper, ITransientDependency { - public static int SuccessfulExitCode = 0; + private const int SuccessfulExitCode = 0; - public static void OpenWebPage(string url) + public void OpenWebPage(string url) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { @@ -25,45 +26,57 @@ namespace Volo.Abp.Cli.Utils } } - public static void Run(string file, string arguments) + + public void Run(string file, string arguments) { var procStartInfo = new ProcessStartInfo(file, arguments); Process.Start(procStartInfo)?.WaitForExit(); } - public static int RunCmd(string command) + public void RunCmd(string command, string workingDirectory = null) + { + RunCmd(command, out _, workingDirectory); + } + + public void RunCmd(string command, out int exitCode, string workingDirectory = null) { var procStartInfo = new ProcessStartInfo( GetFileName(), GetArguments(command) ); + if (!string.IsNullOrEmpty(workingDirectory)) + { + procStartInfo.WorkingDirectory = workingDirectory; + } + using (var process = Process.Start(procStartInfo)) { process?.WaitForExit(); - return process?.ExitCode ?? 0; + + exitCode = process.ExitCode; } } - public static string RunCmdAndGetOutput(string command) + public string RunCmdAndGetOutput(string command, string workingDirectory = null) { - return RunCmdAndGetOutput(command, out int _); + return RunCmdAndGetOutput(command, out int _, workingDirectory); } - public static string RunCmdAndGetOutput(string command, out bool isExitCodeSuccessful) + public string RunCmdAndGetOutput(string command, out bool isExitCodeSuccessful, string workingDirectory = null) { - var output = RunCmdAndGetOutput(command, out int exitCode); + var output = RunCmdAndGetOutput(command, out int exitCode, workingDirectory); isExitCodeSuccessful = exitCode == SuccessfulExitCode; return output; } - public static string RunCmdAndGetOutput(string command, out int exitCode) + public string RunCmdAndGetOutput(string command, out int exitCode, string workingDirectory = null) { string output; using (var process = new Process()) { - process.StartInfo = new ProcessStartInfo(CmdHelper.GetFileName()) + process.StartInfo = new ProcessStartInfo(GetFileName()) { Arguments = GetArguments(command), UseShellExecute = false, @@ -72,6 +85,11 @@ namespace Volo.Abp.Cli.Utils RedirectStandardError = true }; + if (!string.IsNullOrEmpty(workingDirectory)) + { + process.StartInfo.WorkingDirectory = workingDirectory; + } + process.Start(); using (var standardOutput = process.StandardOutput) @@ -91,7 +109,7 @@ namespace Volo.Abp.Cli.Utils return output.Trim(); } - public static string GetArguments(string command) + public string GetArguments(string command) { if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { @@ -102,7 +120,7 @@ namespace Volo.Abp.Cli.Utils return "/C \"" + command + "\""; } - public static string GetFileName() + public string GetFileName() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs new file mode 100644 index 0000000000..15234c2c82 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs @@ -0,0 +1,24 @@ +namespace Volo.Abp.Cli.Utils +{ + public interface ICmdHelper + { + void OpenWebPage(string url); + + void Run(string file, string arguments); + + string GetArguments(string command); + + string GetFileName(); + + void RunCmd(string command, string workingDirectory = null); + + void RunCmd(string command, out int exitCode, string workingDirectory = null); + + string RunCmdAndGetOutput(string command, string workingDirectory = null); + + + string RunCmdAndGetOutput(string command, out bool isExitCodeSuccessful, string workingDirectory = null); + + string RunCmdAndGetOutput(string command, out int exitCode, string workingDirectory = null); + } +} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/CmdHelper.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/CmdHelper.cs deleted file mode 100644 index 3b8b8f0775..0000000000 --- a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/CmdHelper.cs +++ /dev/null @@ -1,103 +0,0 @@ -using System.Diagnostics; -using System.IO; -using System.Runtime.InteropServices; -using Volo.Abp.DependencyInjection; - -namespace Volo.Abp.Studio.Helpers -{ - //todo: move this to volo.abp.cli.core! - public class CmdHelper : ICmdHelper, ITransientDependency - { - public void RunCmd(string command, string workingDirectory = null) - { - var procStartInfo = new ProcessStartInfo( - GetFileName(), - GetArguments(command) - ); - - if (!string.IsNullOrEmpty(workingDirectory)) - { - procStartInfo.WorkingDirectory = workingDirectory; - } - - using (var process = Process.Start(procStartInfo)) - { - process?.WaitForExit(); - } - } - - public string RunCmdAndGetOutput(string command, string workingDirectory = null) - { - string output; - - using (var process = new Process()) - { - process.StartInfo = new ProcessStartInfo(GetFileName()) - { - Arguments = GetArguments(command), - UseShellExecute = false, - CreateNoWindow = true, - RedirectStandardOutput = true, - RedirectStandardError = true - }; - - if (!string.IsNullOrEmpty(workingDirectory)) - { - process.StartInfo.WorkingDirectory = workingDirectory; - } - - process.Start(); - - using (var standardOutput = process.StandardOutput) - { - using (var standardError = process.StandardError) - { - output = standardOutput.ReadToEnd(); - output += standardError.ReadToEnd(); - } - } - - process.WaitForExit(); - } - - return output.Trim(); - } - - private string GetArguments(string command) - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - return "-c \"" + command + "\""; - } - - //Windows default. - return "/C \"" + command + "\""; - } - - private string GetFileName() - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - //Windows - return "cmd.exe"; - } - - //Linux or OSX - if (File.Exists("/bin/bash")) - { - return "/bin/bash"; - } - - if (File.Exists("/bin/sh")) - { - return "/bin/sh"; //some Linux distributions like Alpine doesn't have bash - } - - throw new AbpException($"Cannot determine shell command for this OS! " + - $"Running on OS: {System.Runtime.InteropServices.RuntimeInformation.OSDescription} | " + - $"OS Architecture: {System.Runtime.InteropServices.RuntimeInformation.OSArchitecture} | " + - $"Framework: {System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription} | " + - $"Process Architecture{System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture}"); - } - } -} diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/ICmdHelper.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/ICmdHelper.cs deleted file mode 100644 index f91bc7e69a..0000000000 --- a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/ICmdHelper.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Volo.Abp.Studio.Helpers -{ - public interface ICmdHelper - { - void RunCmd(string command, string workingDirectory = null); - - string RunCmdAndGetOutput(string command, string workingDirectory = null); - } -} \ No newline at end of file diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs index 935ed85573..b4a21560cb 100644 --- a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Threading.Tasks; +using Volo.Abp.Cli.Utils; using Volo.Abp.DependencyInjection; using Volo.Abp.Studio.Helpers; diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs index 52613f2f49..75ffaca579 100644 --- a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs +++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Threading.Tasks; using Volo.Abp.Cli.NuGet; using Volo.Abp.Cli.ProjectBuilding; +using Volo.Abp.Cli.Utils; using Volo.Abp.DependencyInjection; using Volo.Abp.Studio.Helpers;