/// <summary> /// Creates command line handling and appends handlers to the provided <see cref="RootCommand"/> /// </summary> /// <param name="root"></param> /// <param name="settings"></param> /// <returns></returns> public static Command CreateCommandHandling(this RootCommand root) { Command version = new Command("version") .Configure(c => { c.AddAlias("--version"); }) .HandledBy <GetVersionCommandLineHandler>(); Command db = new Command("db") .Configure(c => { c.AddAlias("--db"); }) .AddSubCommand(new ValidatedCommand("init") .Configure(c => { c.AddAlias("--init"); c.AddAlias("-i"); c.AddValidation(sp => { return(true, string.Empty); }); }) .HandledBy <DbInitCommandLineHandler>()) .AddSubCommand(new ValidatedCommand("migrate") .Configure(c => { c.AddAlias("--migrate"); c.AddAlias("-m"); c.AddValidation(sp => { return(true, string.Empty); }); }) .HandledBy <MigrateToLatestVersionCommandHandler>()); Command rootCommand = root .AddSubCommand(db) .AddSubCommand(version); return(rootCommand); }
/// <summary> /// Register commandline commands /// </summary> /// <returns></returns> private Command RegisterCommandLineCommands() { var root = new RootCommand(); var run = new Command("--run", "Start a load test") .Configure(c => { c.AddAlias("-r"); var fileOption = new Option <FileInfo>("--file").ExistingOnly(); fileOption.AddAlias("-f"); c.AddOption(fileOption); var @out = new Option <string>("--out"); @out.AddAlias("-o"); c.AddOption(@out); var debugOption = new Option <bool>("--debug"); debugOption.AddAlias("-d"); c.AddOption(debugOption); }) .HandledBy <RunCommand>(); var version = new Command("--version", "Show version information") .Configure(c => { c.AddAlias("-v"); }) .HandledBy <VersionCommand>(); var newProject = new Command("--new", "Creates a new test project") .Configure(c => { var nameOption = new Option <string>("--name"); nameOption.AddAlias("-n"); nameOption.IsRequired = true; c.AddOption(nameOption); }) .HandledBy <NewCommand>(); return(root .AddSubCommand(run) .AddSubCommand(version) .AddSubCommand(newProject) ); }