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); } }
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; }
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); }
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); }
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); }
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); } } }
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; }
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); }