using Alma.Logging; namespace Alma.Command.Help; public class HelpCommand : ICommand { private readonly Func> _commandsProvider; private readonly ILogger _logger; public string CommandString => "help"; public string[] CommandAliases { get; } = ["--help", "-h"]; public HelpCommand( IServiceProvider serviceProvider, ILogger logger ) { _commandsProvider = () => (IEnumerable?)serviceProvider.GetService(typeof(IEnumerable)) ?? throw new ApplicationException(); _logger = logger; } public Task Run(List parameters) { _logger.LogInformation("Commands:" + Environment.NewLine); foreach (var command in _commandsProvider().OrderBy(c => c.CommandString)) { _logger.LogInformation(command.CommandString); } return Task.CompletedTask; } }