//===========================================================================================
        /// <summary>
        /// Register a handler for a specific command line argument
        /// </summary>
        /// <param name="argName"></param>
        /// <param name="argHandler"></param>
        /// <param name="required"></param>
        /// <param name="helpString"></param>
        /// <returns></returns>
        public Boolean RegisterArgument(String argName, CommandLineArgHandler argHandler, Boolean required, String helpString)
        {
            if (String.IsNullOrEmpty(argName))
            {
                Console.WriteLine("Empty paramenter name");
                return(false);
            }
            if (ArgumentHandler.ContainsKey(argName))
            {
                Console.WriteLine("Argument already registered: " + argName);
                return(false);
            }

            ArgDefinition argDef = new ArgDefinition();

            argDef.handler    = argHandler;
            argDef.required   = required;
            argDef.helpString = helpString;
            argDef.hadError   = false;

            String argPrefix = argName.Substring(0, 2);

            if (argPrefix != "--")
            {
                // This is the empty value
                argDef.emptyValueName = argName;
                argName = "";
            }

            ArgumentHandler.Add(argName, argDef);
            return(true);
        }
        public ArgDefinitionFluentBuilder(
            ArgDefinition <TTarget> arg,
            Expression <Func <TTarget, TProp> > selector,
            Func <string, TProp> formatter)
        {
            this._arg       = arg;
            this._selector  = selector;
            this._formatter = formatter;

            this._arg.Setter = (target, s) => target.SetPropertyValue(_selector, _formatter(s));
        }
示例#3
0
        public static IArgDefinitionFluentBuilder <TTarget, decimal> AddArg <TTarget>(
            this GetOptBase <TTarget> getOpt,
            Expression <Func <TTarget, decimal> > selector) where TTarget : new()
        {
            var arg = new ArgDefinition <TTarget>();

            arg.ArgName = PropertyHelper <TTarget> .GetName(selector);

            getOpt._args.Add(arg);
            return(new ArgDefinitionFluentBuilder <TTarget, decimal>(arg, selector, DefaultFormatters.ToDecimalFormatter()));
        }
示例#4
0
        public static IArgDefinitionFluentBuilder <TTarget, string> AddArg <TTarget>(
            this GetOptBase <TTarget> getOpt,
            Expression <Func <TTarget, string> > selector) where TTarget : new()
        {
            var arg = new ArgDefinition <TTarget>();

            arg.ArgName = PropertyHelper <TTarget> .GetName(selector);

            getOpt._args.Add(arg);
            return(new ArgDefinitionFluentBuilder <TTarget, string>(arg, selector, s => s));
        }
示例#5
0
        public IArgDefinitionFluentBuilder <TTarget, TProp> AddArg <TProp>(
            Expression <Func <TTarget, TProp> > selector,
            Func <string, TProp> formatter)
        {
            var arg = new ArgDefinition <TTarget>();

            arg.ArgName = PropertyHelper <TTarget> .GetName(selector);

            this._args.Add(arg);

            return(new ArgDefinitionFluentBuilder <TTarget, TProp>(arg, selector, formatter));
        }
        //===========================================================================================
        /// <summary>
        /// Once a command line argument has been parsed, notify the handler
        /// </summary>
        /// <param name="arg"></param>
        /// <param name="value"></param>
        private void NotifyCommandLineArgumentParsed(String arg, String value)
        {
            CommandLinePargerEventArgs e = new CommandLinePargerEventArgs();
            Boolean hadError             = false;


            if (ArgumentHandler != null)
            {
                if (ArgumentHandler.ContainsKey(arg))
                {
                    if (ArgumentHandler[arg].handler != null)
                    {
                        ArgDefinition argResult = ArgumentHandler[arg];
                        e.parameter = arg;
                        e.argvalue  = value;

                        ArgumentHandler[arg].handler(this, e, out hadError);
                        argResult.hadError = hadError;
                        if (hadError == true)
                        {
                            ArgsParsedSuccessfully = false;
                        }
                        argResult.parsed     = true;
                        ArgumentHandler[arg] = argResult;
                    }
                    else
                    {
                        Console.WriteLine("Argument had a null handler: " + arg);
                        NotifyError(arg);
                        ArgsParsedSuccessfully = false;
                    }
                }
                else
                {
                    //Console.WriteLine("Argument was not registerd: " + arg);
                    NotifyError(arg);
                    ArgsParsedSuccessfully = false;
                }
            }
        }