using System.CommandLine; namespace StellaOps.Policy.Tools; public static class PolicySimulationSmokeApp { public static async Task 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; } } }