From 5ad2c33c5ee3f4f1316d3e614bd0ed25006159c6 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 21 Dec 2021 20:13:35 +0800 Subject: [PATCH 1/2] Add `CleanCommand`. Resolve #11011 --- .../Volo/Abp/Cli/AbpCliCoreModule.cs | 5 +- .../Volo/Abp/Cli/Commands/CleanCommand.cs | 62 +++++++++++++++++++ 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CleanCommand.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs index 303acd7e00..af8a9501a1 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs @@ -41,8 +41,8 @@ public class AbpCliCoreModule : AbpModule Configure(options => { - //TODO: Define constants like done for GenerateProxyCommand.Name. - options.Commands["help"] = typeof(HelpCommand); + //TODO: Define constants like done for GenerateProxyCommand.Name. + options.Commands["help"] = typeof(HelpCommand); options.Commands["prompt"] = typeof(PromptCommand); options.Commands["new"] = typeof(NewCommand); options.Commands["get-source"] = typeof(GetSourceCommand); @@ -64,6 +64,7 @@ public class AbpCliCoreModule : AbpModule options.Commands["bundle"] = typeof(BundleCommand); options.Commands["create-migration-and-run-migrator"] = typeof(CreateMigrationAndRunMigratorCommand); options.Commands["install-libs"] = typeof(InstallLibsCommand); + options.Commands["clean"] = typeof(CleanCommand); }); Configure(options => diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CleanCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CleanCommand.cs new file mode 100644 index 0000000000..72cdf586e2 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CleanCommand.cs @@ -0,0 +1,62 @@ +using System; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Cli.Args; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.Commands; + +public class CleanCommand : IConsoleCommand, ITransientDependency +{ + public ILogger Logger { get; set; } + + public CleanCommand() + { + Logger = NullLogger.Instance; + } + + public Task ExecuteAsync(CommandLineArgs commandLineArgs) + { + var binEntries = Directory.EnumerateDirectories(Directory.GetCurrentDirectory(), "bin", SearchOption.AllDirectories); + var objEntries = Directory.EnumerateDirectories(Directory.GetCurrentDirectory(), "obj", SearchOption.AllDirectories); + + foreach (var path in binEntries.Concat(objEntries)) + { + if (path.IndexOf("node_modules", StringComparison.OrdinalIgnoreCase) > 0) + { + Logger.LogInformation($"Skipping: {path}"); + } + else + { + Logger.LogInformation($"Deleting: {path}"); + Directory.Delete(path, true); + } + } + + Logger.LogInformation($"BIN and OBJ folders have been successfully deleted!"); + + return Task.CompletedTask; + } + + public string GetUsageInfo() + { + var sb = new StringBuilder(); + + sb.AppendLine(""); + sb.AppendLine("Usage:"); + sb.AppendLine(" abp clean"); + sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); + + return sb.ToString(); + } + + public string GetShortDescription() + { + return "Delete all BIN and OBJ folders in current folder."; + } +} From dcc4448368c411a9491e0e7e0292c274b3177457 Mon Sep 17 00:00:00 2001 From: "ismail.yilmaz" Date: Tue, 21 Dec 2021 15:47:04 +0300 Subject: [PATCH 2/2] used constant for command name --- .../src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs | 2 +- .../src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CleanCommand.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs index af8a9501a1..7f8f820602 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs @@ -64,7 +64,7 @@ public class AbpCliCoreModule : AbpModule options.Commands["bundle"] = typeof(BundleCommand); options.Commands["create-migration-and-run-migrator"] = typeof(CreateMigrationAndRunMigratorCommand); options.Commands["install-libs"] = typeof(InstallLibsCommand); - options.Commands["clean"] = typeof(CleanCommand); + options.Commands[CleanCommand.Name] = typeof(CleanCommand); }); Configure(options => diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CleanCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CleanCommand.cs index 72cdf586e2..9cc89c6017 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CleanCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CleanCommand.cs @@ -12,6 +12,8 @@ namespace Volo.Abp.Cli.Commands; public class CleanCommand : IConsoleCommand, ITransientDependency { + public const string Name = "clean"; + public ILogger Logger { get; set; } public CleanCommand()