This repository has been archived on 2023-02-02. You can view files and clone it, but cannot push or open issues or pull requests.
mfgames-toolbuilder-cil/tests/SampleTool/CrashCommand.cs

45 lines
1.1 KiB
C#

using System;
using System.CommandLine;
using System.CommandLine.Invocation;
using System.Threading.Tasks;
using MfGames.ToolBuilder;
namespace SampleTool
{
public class CrashCommand : Command, ICommandHandler
{
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.");
}
}
}