示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }