Files
git.stella-ops.org/src/__Libraries/StellaOps.Policy.Tools/PolicySimulationSmokeApp.cs
2026-01-13 18:53:39 +02:00

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