Наследование: IOptionValue
Пример #1
0
        private void ProcessArguments(IOptions options, OptionValue opt, string[] tokens, ref int index)
        {
            // loop until an option is found
            while (++index < tokens.Length)
            {
                String str = tokens[index];

                // found an Option, not an argument
                if (options.HasOption(str) && str.StartsWith("-"))
                {
                    index--;
                    break;
                }

                // found a value
                try {
                    opt.AddValueForProcessing(Util.StripLeadingAndTrailingQuotes(str));
                } catch (ApplicationException) {
                    index--;
                    break;
                }
            }

            if (opt.Values == null && !opt.Option.HasOptionalArguments())
            {
                throw new MissingArgumentException(opt.Option);
            }
        }
Пример #2
0
        public IOptionValue GetOptionValue(string optionName)
        {
            var option = options.FirstOrDefault(x => x.Option.Name == optionName || x.Option.LongName == optionName);
            if (option == null)
                return null;

            var optionValue = new OptionValue(option.Option);
            foreach (var value in options.Where(x => x.Option.Name == optionName || x.Option.LongName == optionName)) {
                optionValue.AddValues(value.Values);
            }

            return optionValue;
        }
Пример #3
0
        private OptionValue SafeGetOptionValue(IOption option)
        {
            if (values == null)
            {
                values = new Dictionary <string, OptionValue>();
            }

            OptionValue value;

            if (!values.TryGetValue(option.Key(), out value))
            {
                values[option.Key()] = value = new OptionValue(option);
            }

            return(value);
        }
Пример #4
0
        protected void ProcessOption(IOptions options, string arg, string[] tokens, ref int index)
        {
            bool hasOption = options.HasOption(arg);

            // if there is no option throw an UnrecognisedOptionException
            if (!hasOption)
            {
                throw new UnrecognizedOptionException("Unrecognized option: " + arg, arg);
            }

            // get the option represented by arg
            OptionValue opt = new OptionValue(options.GetOption(arg));

            // if the option is a required option remove the option from
            // the requiredOptions list
            if (opt.Option.IsRequired)
            {
                options.RequiredOptions.Remove(opt.Option.Key());
            }

            // if the option is in an OptionGroup make that option the selected
            // option of the group
            if (options.GetOptionGroup(opt.Option) != null)
            {
                IOptionGroup group = options.GetOptionGroup(opt.Option);

                if (group.IsRequired)
                {
                    foreach (var option in group.Options)
                    {
                        options.RequiredOptions.Remove(option.Key());
                    }
                }

                // group.SetSelected(opt.Option);
                AssertNotSelected(group, opt.Option);
            }

            // if the option takes an argument value
            if (opt.Option.HasArgument())
            {
                ProcessArguments(options, opt, tokens, ref index);
            }

            // set the option on the command line
            cmd.AddOption(opt);
        }
Пример #5
0
        public IOptionValue GetOptionValue(string optionName)
        {
            var option = options.FirstOrDefault(x => x.Option.Name == optionName || x.Option.LongName == optionName);

            if (option == null)
            {
                return(null);
            }

            var optionValue = new OptionValue(option.Option);

            foreach (var value in options.Where(x => x.Option.Name == optionName || x.Option.LongName == optionName))
            {
                optionValue.AddValues(value.Values);
            }

            return(optionValue);
        }
Пример #6
0
        protected void ProcessProperties(IOptions options, IEnumerable <KeyValuePair <string, string> > properties)
        {
            if (properties == null)
            {
                return;
            }

            foreach (KeyValuePair <string, string> option in properties)
            {
                if (!cmd.HasOption(option.Key))
                {
                    IOption opt = options.GetOption(option.Key);

                    // get the value from the properties instance
                    var         value    = option.Value;
                    OptionValue optValue = null;
                    if (opt.HasArgument())
                    {
                        optValue = SafeGetOptionValue(opt);

                        if (optValue.Values == null || !optValue.Values.Any())
                        {
                            try {
                                optValue.AddValueForProcessing(value);
                            } catch (ApplicationException) {
                                // if we cannot add the value don't worry about it
                            }
                        }
                    }
                    else if (String.Compare(value, "yes", StringComparison.OrdinalIgnoreCase) != 0 &&
                             String.Compare(value, "true", StringComparison.OrdinalIgnoreCase) != 0 &&
                             String.Compare(value, "1", StringComparison.OrdinalIgnoreCase) != 0)
                    {
                        // if the value is not yes, true or 1 then don't add the
                        // option to the CommandLine
                        break;
                    }

                    cmd.AddOption(optValue);
                }
            }
        }
Пример #7
0
        private OptionValue SafeGetOptionValue(IOption option)
        {
            if (values == null)
                values = new Dictionary<string, OptionValue>();

            OptionValue value;
            if (!values.TryGetValue(option.Key(), out value)) {
                values[option.Key()] = value = new OptionValue(option);
            }

            return value;
        }
Пример #8
0
        private void ProcessArguments(IOptions options, OptionValue opt, string[] tokens, ref int index)
        {
            // loop until an option is found
            while (++index < tokens.Length) {
                String str = tokens[index];

                // found an Option, not an argument
                if (options.HasOption(str) && str.StartsWith("-")) {
                    index--;
                    break;
                }

                // found a value
                try {
                    opt.AddValueForProcessing(Util.StripLeadingAndTrailingQuotes(str));
                } catch (ApplicationException) {
                    index--;
                    break;
                }
            }

            if (opt.Values == null && !opt.Option.HasOptionalArguments()) {
                throw new MissingArgumentException(opt.Option);
            }
        }
Пример #9
0
        protected void ProcessOption(IOptions options, string arg, string[] tokens, ref int index)
        {
            bool hasOption = options.HasOption(arg);

            // if there is no option throw an UnrecognisedOptionException
            if (!hasOption) {
                throw new UnrecognizedOptionException("Unrecognized option: " + arg, arg);
            }

            // get the option represented by arg
            OptionValue opt = new OptionValue(options.GetOption(arg));

            // if the option is a required option remove the option from
            // the requiredOptions list
            if (opt.Option.IsRequired) {
                options.RequiredOptions.Remove(opt.Option.Key());
            }

            // if the option is in an OptionGroup make that option the selected
            // option of the group
            if (options.GetOptionGroup(opt.Option) != null) {
                IOptionGroup group = options.GetOptionGroup(opt.Option);

                if (group.IsRequired) {
                    foreach (var option in group.Options)
                        options.RequiredOptions.Remove(option.Key());
                }

                // group.SetSelected(opt.Option);
                AssertNotSelected(group, opt.Option);
            }

            // if the option takes an argument value
            if (opt.Option.HasArgument()) {
                ProcessArguments(options, opt, tokens, ref index);
            }

            // set the option on the command line
            cmd.AddOption(opt);
        }