public ValidatedCommand ValidateCommand(CommandName commandName) { var command = _allCommands.FirstOrDefault(cn => cn.Name.ToLower().Equals(commandName.Name.ToLower())); if (command == null) { return null; } var clone = CreateCleanCommandClone(command); return new ValidatedCommand { FoundCommand = command, CloneCommand = clone }; }
public IList<Option> GetOptions(CommandName name, Command command) { if (!name.CleanInput.Contains('-')) { return null; } var rawOptions = name.CleanInput.Split('-'); if (!rawOptions.Any()) { return null; } var options = new List<Option>(); foreach (var rawOption in rawOptions) { if (string.IsNullOrWhiteSpace(rawOption)) { continue; } string optionName = String.Empty; try { int firstWhitespace = rawOption.IndexOf(' '); if (firstWhitespace == -1) { optionName = rawOption; } else { optionName = rawOption.Substring(0, firstWhitespace); } } catch { continue; } var cOption = command.Options.FirstOrDefault(c => c.Identifier.ToLower().Equals(optionName.ToLower())); if (cOption == null) { continue; } var clone = new Option(); clone = Mapper.Map(cOption, clone); if (!cOption.HaveParameters) { options.Add(clone); continue; } var parameters = GetParameters(rawOption.Replace(optionName + " ", "")); if (parameters == null) { options.Add(clone); continue; } clone.Parameters = parameters; options.Add(clone); } return options; }