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 MkdirCommand(), new MvCommand(), new LinkCommand(), new TemplatesCommand(), 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; }