private IVerbRunner CreateVerbRunner(Verb verb, IVerbRunnerOptions options) { IVerbRunnerFactory factory = _factorySelector[verb]; IVerbRunner runner = factory.Create(options); return(runner); }
public CommandLineParseResult Parse(string[] args) { ParserResult <object> result = Parser.Default.ParseArguments <ConfigureOptions, DrawOptions, FetchOptions>(args); if (result is NotParsed <object> ) { IEnumerable <Error> errors = (result as NotParsed <object>).Errors; foreach (Error error in errors) { _log.Error("Invalid command line arguments ({0}).", error.Tag); } return(CommandLineParseResult.Failed); } var parsed = (Parsed <object>)result; IVerbOptions options = parsed.Value as IVerbOptions; if (options == null) { string message = "Unexpected problem parsing command line."; _log.Fatal(message); throw new LoggedAsFatalException(message); } Verb v = GetVerbFrom(options); IVerbOptionsConverter converter = _factories[v]; IVerbRunnerOptions runnerOptions = converter.ConvertOptions(options); return(CommandLineParseResult.Correct(v, runnerOptions)); }
public IVerbRunner Create(IVerbRunnerOptions verbOptions) { TOptions optionsTyped = verbOptions as TOptions; if (optionsTyped == null) { Log.Warn( "No correct options of type {0} provided when generating a runner.", typeof(TOptions).Name); } return(CreateInternal(optionsTyped)); }
public static CommandLineParseResult Correct(Verb verb, IVerbRunnerOptions options) { return(new CommandLineParseResult { IsCorrect = true, Verb = verb, VerbOptions = options }); }