namespace Spectre.Console.Cli; /// /// Base class for a command. /// /// The settings type. /// public abstract class Command : ICommand where TSettings : CommandSettings { /// /// Validates the specified settings and remaining arguments. /// /// The command context. /// The settings. /// The validation result. public virtual ValidationResult Validate([NotNull] CommandContext context, [NotNull] TSettings settings) { return ValidationResult.Success(); } /// /// Executes the command. /// /// The command context. /// The settings. /// An integer indicating whether or not the command executed successfully. public abstract int Execute([NotNull] CommandContext context, [NotNull] TSettings settings); /// ValidationResult ICommand.Validate(CommandContext context, CommandSettings settings) { return Validate(context, (TSettings)settings); } /// Task ICommand.Execute(CommandContext context, CommandSettings settings) { Debug.Assert(settings is TSettings, "Command settings is of unexpected type."); return Task.FromResult(Execute(context, (TSettings)settings)); } /// Task ICommand.Execute(CommandContext context, TSettings settings) { return Task.FromResult(Execute(context, settings)); } }