mirror of https://github.com/abpframework/abp.git
3 changed files with 105 additions and 0 deletions
@ -0,0 +1,83 @@ |
|||||
|
using System; |
||||
|
using System.IO; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Logging.Abstractions; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Cli.Args; |
||||
|
using Volo.Abp.Cli.ProjectBuilding; |
||||
|
using Volo.Abp.Cli.ProjectBuilding.Templates.MvcModule; |
||||
|
using Volo.Abp.Cli.ProjectModification; |
||||
|
using Volo.Abp.Cli.Utils; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.Cli.Commands |
||||
|
{ |
||||
|
public class ListModulesCommand : IConsoleCommand, ITransientDependency |
||||
|
{ |
||||
|
public ModuleInfoProvider ModuleInfoProvider { get; } |
||||
|
public ILogger<ListModulesCommand> Logger { get; set; } |
||||
|
|
||||
|
|
||||
|
public ListModulesCommand(ModuleInfoProvider moduleInfoProvider) |
||||
|
{ |
||||
|
ModuleInfoProvider = moduleInfoProvider; |
||||
|
Logger = NullLogger<ListModulesCommand>.Instance; |
||||
|
} |
||||
|
|
||||
|
public async Task ExecuteAsync(CommandLineArgs commandLineArgs) |
||||
|
{ |
||||
|
var modules = await ModuleInfoProvider.GetModuleListAsync(); |
||||
|
var freeModules = modules.Where(m => !m.IsPro).ToList(); |
||||
|
var proModules = modules.Where(m => m.IsPro).ToList(); |
||||
|
|
||||
|
var output = new StringBuilder(Environment.NewLine); |
||||
|
output.AppendLine("Open Source Application Modules"); |
||||
|
output.AppendLine(); |
||||
|
|
||||
|
foreach (var module in freeModules) |
||||
|
{ |
||||
|
output.AppendLine($"> {module.DisplayName.PadRight(50)} ({module.Name})"); |
||||
|
} |
||||
|
|
||||
|
if (commandLineArgs.Options.ContainsKey("include-pro-modules")) |
||||
|
{ |
||||
|
output.AppendLine(); |
||||
|
output.AppendLine("Commercial (Pro) Application Modules"); |
||||
|
output.AppendLine(); |
||||
|
foreach (var module in proModules) |
||||
|
{ |
||||
|
output.AppendLine($"> {module.DisplayName.PadRight(50)} ({module.Name})"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Logger.LogInformation(output.ToString()); |
||||
|
} |
||||
|
|
||||
|
public string GetUsageInfo() |
||||
|
{ |
||||
|
var sb = new StringBuilder(); |
||||
|
|
||||
|
sb.AppendLine(""); |
||||
|
sb.AppendLine("'list-modules' command is used for listing open source application modules."); |
||||
|
sb.AppendLine(""); |
||||
|
sb.AppendLine("Usage:"); |
||||
|
sb.AppendLine(" abp list-modules"); |
||||
|
sb.AppendLine(" abp list-modules --include-pro-modules"); |
||||
|
sb.AppendLine(""); |
||||
|
sb.AppendLine("Options:"); |
||||
|
sb.AppendLine(" --include-pro-modules Includes commercial (pro) modules in the output."); |
||||
|
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 "List open source application modules"; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue