mfgames-cil/examples/SampleTool/Commands/CrashCommand.cs

42 lines
1 KiB
C#

using System;
using System.CommandLine;
using System.CommandLine.Invocation;
using System.Threading.Tasks;
using MfGames.ToolBuilder;
namespace SampleTool.Commands;
public class CrashCommand : Command, ICommandHandler, ITopCommand
{
private readonly Option<bool> messyOption;
/// <inheritdoc />
public CrashCommand()
: base("crash", "Crash the application with an exception")
{
this.Handler = this;
this.messyOption = new Option<bool>("--messy");
this.AddOption(this.messyOption);
}
/// <inheritdoc />
public int Invoke(InvocationContext context)
{
return this.InvokeAsync(context).Result;
}
/// <inheritdoc />
public Task<int> InvokeAsync(InvocationContext context)
{
bool messy = context.ParseResult.GetValueForOption(this.messyOption);
if (messy)
{
throw new Exception("This command crashed messily as requested.");
}
throw new ToolException("This command crashed as requested.");
}
}