namespace RemSox.UI.CLI; /// /// Defines a command executable via the CLI or GUI terminal. /// public interface ICommand { /// /// Gets the name of the command used to invoke it. /// string Name { get; } /// /// Gets a brief description of the command's functionality. /// string Description { get; } /// /// Executes the command. /// /// The arguments provided to the command. /// A delegate to stream output lines to the current console or terminal. Task ExecuteAsync(string? arguments, Action printLine); /// /// Interrupts the command if it's currently running. This is called when the user presses Ctrl+C in the CLI. /// Task StopAsync() { return Task.CompletedTask; } }