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;
}
}