public Argument <T> DefineOption <T>(string name, T defaultValue, Func <string, T> valueConverter, bool isRequired) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException(Strings.NameMissing, "name"); } if (DefinedParameters.Any()) { throw new InvalidOperationException(Strings.OptionsMustBeDefinedBeforeParameters); } var names = ParseOptionNameList(name); var option = new Argument <T>(_definedCommand, names, defaultValue, isRequired); _options.Add(option); if (_activeCommand != _definedCommand) { return(option); } try { if (Parser.TryParseOption(option.GetDisplayName(), option.Names, valueConverter, isRequired, out T value, out bool specified)) { option.SetValue(value); } else if (specified) { // No value was provided, but the option was specified and a value wasn't required option.MarkSpecified(); } }
public Argument <T> DefineParameter <T>(string name, T defaultValue, Func <string, T> valueConverter) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException(Strings.NameMissing, "name"); } if (!IsValidName(name)) { var message = string.Format(Strings.ParameterNameIsNotValidFmt, name); throw new ArgumentException(message, "name"); } if (DefinedParameters.Any(p => p.IsList)) { throw new InvalidOperationException(Strings.ParametersCannotBeDefinedAfterLists); } if (DefinedParameters.Any(p => string.Equals(name, p.Name, StringComparison.OrdinalIgnoreCase))) { var message = string.Format(Strings.ParameterAlreadyDefinedFmt, name); throw new InvalidOperationException(message); } var parameter = new Argument <T>(_definedCommand, name, defaultValue); _parameters.Add(parameter); if (_activeCommand != _definedCommand) { return(parameter); } try { T value; if (Parser.TryParseParameter(parameter.GetDisplayName(), valueConverter, out value)) { parameter.SetValue(value); } } catch (ArgumentSyntaxException ex) { ReportError(ex.Message); } return(parameter); }
public Argument <T> DefineOption <T>(string name, T defaultValue, Func <string, T> valueConverter) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException(Strings.NameMissing, "name"); } if (DefinedParameters.Any()) { throw new InvalidOperationException(Strings.OptionsMustBeDefinedBeforeParameters); } var names = ParseOptionNameList(name); var option = new Argument <T>(_definedCommand, names, defaultValue); _options.Add(option); if (_activeCommand != _definedCommand) { return(option); } try { T value; if (Parser.TryParseOption(option.GetDisplayName(), option.Names, valueConverter, out value)) { option.SetValue(value); } } catch (ArgumentSyntaxException ex) { ReportError(ex.Message); } return(option); }