in Source/NuGetGallery.Operations/Infrastructure/CommandLineParser.cs [26:76]
public void ExtractOptions(ICommand command, IEnumerator<string> argsEnumerator)
{
List<string> arguments = new List<string>();
IDictionary<OptionAttribute, PropertyInfo> properties = _commandManager.GetCommandOptions(command);
while (true)
{
string option = GetNextCommandLineItem(argsEnumerator);
if (option == null)
{
break;
}
if (!(option.StartsWith("/", StringComparison.OrdinalIgnoreCase) && _supportSlashAsSwitch)
&& !option.StartsWith("-", StringComparison.OrdinalIgnoreCase))
{
arguments.Add(option);
continue;
}
string optionText = option.Substring(1);
string value = null;
if (optionText.EndsWith("-", StringComparison.OrdinalIgnoreCase))
{
optionText = optionText.TrimEnd('-');
value = "false";
}
var result = GetPartialOptionMatch(properties, prop => prop.Value.Name, prop => prop.Key.AltName, option, optionText);
PropertyInfo propInfo = result.Value;
if (propInfo.PropertyType == typeof(bool))
{
value = value ?? "true";
}
else
{
value = GetNextCommandLineItem(argsEnumerator);
}
if (value == null)
{
throw new CommandLineException(TaskResources.MissingOptionValueError, option);
}
AssignValue(command, propInfo, option, value);
}
command.Arguments.AddRange(arguments);
}