/// <summary> /// Parse CLI arguments to one of the specified types, and runs the provided function if parsing is successful /// </summary> /// <param name="args">Arguments passed to Main</param> /// <param name="targetVerbTypes">The list of possible target verb types to construct from the args</param> /// <param name="onParse">The function to call on a successful parse</param> /// <returns>The return code from the onParse function</returns> public static int ParseAndRun(IEnumerable <string> args, Type[] targetVerbTypes, Func <GlobalOptions, object, int> onParse) { int ret = _parser .ParseArguments( args, targetVerbTypes ) .MapResult( parsed => { var cliOptions = Verify <CliOptions>(parsed); GlobalOptions globals = new GlobalOptionsFactory().Load(cliOptions); if (InitSmiLogging) { SmiLogging.Setup(globals.LoggingOptions, HostProcessName); } return(onParse(globals, parsed)); }, OnErrors ); return(ret); }
/// <summary> /// Parse CLI arguments to the specified type, and runs the provided function if parsing is successful /// </summary> /// <param name="args">Arguments passed to Main</param> /// <param name="onParse">The function to call on a successful parse</param> /// <returns>The return code from the onParse function</returns> public static int ParseAndRun <T>(IEnumerable <string> args, Func <GlobalOptions, T, int> onParse) where T : CliOptions { int ret = _parser .ParseArguments <T>(args) .MapResult( parsed => { GlobalOptions globals = new GlobalOptionsFactory().Load(parsed); if (InitSmiLogging) { SmiLogging.Setup(globals.LoggingOptions, HostProcessName); } return(onParse(globals, parsed)); }, OnErrors ); return(ret); }