Files
RemSox/RemSox.Kernel/UI/CLI/ICommand.cs
T

32 lines
951 B
C#

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