42 lines
1 KiB
C#
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.");
|
|
}
|
|
}
|