Add top-level CancellationToken support to Spectre.Console.Cli

Also raise CA2016 (forward the CancellationToken parameter to methods that take one) to warning

Fixes #701
This commit is contained in:
Cédric Luthi
2024-09-09 00:21:17 +02:00
committed by Patrik Svensson
parent d90e94dbb3
commit f5f61ca610
55 changed files with 222 additions and 174 deletions

View File

@@ -56,19 +56,19 @@ internal sealed class Configurator : IUnsafeConfigurator, IConfigurator, IConfig
return new CommandConfigurator(command);
}
public ICommandConfigurator AddDelegate<TSettings>(string name, Func<CommandContext, TSettings, int> func)
public ICommandConfigurator AddDelegate<TSettings>(string name, Func<CommandContext, TSettings, CancellationToken, int> func)
where TSettings : CommandSettings
{
var command = Commands.AddAndReturn(ConfiguredCommand.FromDelegate<TSettings>(
name, (context, settings) => Task.FromResult(func(context, (TSettings)settings))));
name, (context, settings, cancellationToken) => Task.FromResult(func(context, (TSettings)settings, cancellationToken))));
return new CommandConfigurator(command);
}
public ICommandConfigurator AddAsyncDelegate<TSettings>(string name, Func<CommandContext, TSettings, Task<int>> func)
public ICommandConfigurator AddAsyncDelegate<TSettings>(string name, Func<CommandContext, TSettings, CancellationToken, Task<int>> func)
where TSettings : CommandSettings
{
var command = Commands.AddAndReturn(ConfiguredCommand.FromDelegate<TSettings>(
name, (context, settings) => func(context, (TSettings)settings)));
name, (context, settings, cancellationToken) => func(context, (TSettings)settings, cancellationToken)));
return new CommandConfigurator(command);
}