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(); } }
private static string GetParameterSyntax(Argument parameter) { var sb = new StringBuilder(); sb.Append(parameter.GetDisplayName()); if (parameter.IsList) { sb.Append(@"..."); } return(sb.ToString()); }
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); }
private static string GetOptionSyntax(Argument option) { var sb = new StringBuilder(); sb.Append(@"["); sb.Append(option.GetDisplayName()); if (!option.IsFlag) { sb.Append(@" <arg>"); } if (option.IsList) { sb.Append(@"..."); } sb.Append(@"]"); return(sb.ToString()); }
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); }
private static string GetParameterSyntax(Argument parameter) { var sb = new StringBuilder(); sb.Append(parameter.GetDisplayName()); if (parameter.IsList) sb.Append(@"..."); return sb.ToString(); }
private static string GetOptionSyntax(Argument option) { var sb = new StringBuilder(); sb.Append(@"["); sb.Append(option.GetDisplayName()); if (!option.IsFlag) sb.Append(@" <arg>"); if (option.IsList) sb.Append(@"..."); sb.Append(@"]"); return sb.ToString(); }