37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using System.CommandLine;
|
|
|
|
namespace StellaOps.Policy.Tools;
|
|
|
|
public static class PolicySimulationSmokeApp
|
|
{
|
|
public static async Task<int> RunAsync(string[] args)
|
|
{
|
|
var runner = new PolicySimulationSmokeRunner();
|
|
var root = PolicySimulationSmokeCommand.Build(runner);
|
|
var parseResult = root.Parse(args, new ParserConfiguration());
|
|
var invocationConfiguration = new InvocationConfiguration();
|
|
using var cancellationSource = new CancellationTokenSource();
|
|
ConsoleCancelEventHandler? handler = (_, e) =>
|
|
{
|
|
e.Cancel = true;
|
|
cancellationSource.Cancel();
|
|
};
|
|
Console.CancelKeyPress += handler;
|
|
|
|
try
|
|
{
|
|
if (parseResult.Errors.Count > 0)
|
|
{
|
|
await parseResult.InvokeAsync(invocationConfiguration, cancellationSource.Token);
|
|
return 64; // EX_USAGE
|
|
}
|
|
|
|
return await parseResult.InvokeAsync(invocationConfiguration, cancellationSource.Token);
|
|
}
|
|
finally
|
|
{
|
|
Console.CancelKeyPress -= handler;
|
|
}
|
|
}
|
|
}
|