1
0
Files
AnchorCli/Commands/CommandDispatcher.cs
2026-03-04 07:59:35 +01:00

32 lines
823 B
C#

using Spectre.Console;
namespace AnchorCli.Commands;
public class CommandDispatcher
{
private readonly CommandRegistry _registry;
public CommandDispatcher(CommandRegistry registry)
{
_registry = registry;
}
public async Task<bool> TryExecuteAsync(string input, CancellationToken ct)
{
if (!input.StartsWith('/')) return false;
var parts = input[1..].Split(' ', 2);
var commandName = parts[0];
var args = parts.Length > 1 ? new[] { parts[1] } : Array.Empty<string>();
var command = _registry.GetCommand(commandName);
if (command == null)
{
AnsiConsole.MarkupLine($"[red]Unknown command: /{commandName}[/]");
return true;
}
await command.ExecuteAsync(args, ct);
return true;
}
}