using NozCli.Commands; namespace NozCli.Repl; public class CommandRegistry { private readonly Dictionary _map; public IReadOnlyList All { get; } public CommandRegistry() { var list = new List { new LsCommand(), new CdCommand(), new CatCommand(), new NewCommand(), new EditCommand(), new PushCommand(), new SyncCommand(), new StatusCommand(), new RmCommand(), new ConfigCommand(), new TreeCommand(), new VersionCommand(), new ClearCommand(), }; // HelpCommand gets the full list so it can print them all list.Add(new HelpCommand(list)); All = list.AsReadOnly(); _map = list.ToDictionary(c => c.Name, StringComparer.OrdinalIgnoreCase); } public ICommand? Find(string name) => _map.GetValueOrDefault(name); public IEnumerable Names => _map.Keys; }