private static void GenerateShortName( HashSet <string> takenAliases, List <string> aliases, List <string> errors, Func <string, bool> isAliasTaken, Func <string, bool> isShortNamePredefined, CliTemplateParameter parameter) { //use long override as base, if exists string flagFullText = parameter.LongNameOverrides.Count > 0 ? parameter.LongNameOverrides[0] : parameter.Name; // try to generate un-prefixed name, if not taken. string shortName = GetFreeShortName(s => isAliasTaken(s) || (isShortNamePredefined(s)), flagFullText); if (!isAliasTaken(shortName)) { aliases.Add(shortName); takenAliases.Add(shortName); return; } // try to generate prefixed name, as the fallback string qualifiedShortName = GetFreeShortName(s => isAliasTaken(s) || (isShortNamePredefined(s)), flagFullText, "p:"); if (!isAliasTaken(qualifiedShortName)) { aliases.Add(qualifiedShortName); return; } errors.Add(string.Format(LocalizableStrings.AliasAssignmentCoordinator_Error_ShortAlias, parameter.Name, shortName, qualifiedShortName)); }
internal TemplateOption( CliTemplateParameter parameter, IReadOnlyList <string> aliases) { TemplateParameter = parameter; Aliases = aliases; _option = parameter.GetOption(aliases); }
private static void HandleLongOverrides( HashSet <string> takenAliases, List <string> aliases, List <string> errors, Func <string, bool> isAliasTaken, Func <string, bool> isLongNamePredefined, CliTemplateParameter parameter) { bool noLongOverrideDefined = false; IEnumerable <string> longNameOverrides = parameter.LongNameOverrides; //if no long override define, we use parameter name if (!longNameOverrides.Any()) { longNameOverrides = new[] { parameter.Name }; noLongOverrideDefined = true; } foreach (string longName in longNameOverrides) { string optionName = "--" + longName; if ((!noLongOverrideDefined && !isAliasTaken(optionName)) //if we use parameter name, we should also check if there is any other parameter which defines this long name. //in case it is, then we should give precedence to other parameter to use it. || (noLongOverrideDefined && !isAliasTaken(optionName) && !isLongNamePredefined(optionName))) { aliases.Add(optionName); takenAliases.Add(optionName); continue; } // if paramater name is taken optionName = "--param:" + longName; if (!isAliasTaken(optionName)) { aliases.Add(optionName); takenAliases.Add(optionName); continue; } errors.Add(string.Format(LocalizableStrings.AliasAssignmentCoordinator_Error_LongAlias, parameter.Name, $"--{longName}", $"--param:{longName}")); } }
/// <summary> /// Gets the list of valid choices for <paramref name="parameter"/>. /// </summary> /// <returns>the dictionary of valid choices and descriptions.</returns> private static IDictionary <string, ParameterChoice> GetValidValuesForChoiceParameter( IEnumerable <TemplateResult> templates, CliTemplateParameter parameter) { Dictionary <string, ParameterChoice> validChoices = new Dictionary <string, ParameterChoice>(); foreach (CliTemplateInfo template in templates.Select(template => template.TemplateInfo)) { if (template.CliParameters.TryGetValue(parameter.Name, out CliTemplateParameter? param)) { if (param is ChoiceTemplateParameter choiceParam) { foreach (var choice in choiceParam.Choices) { validChoices[choice.Key] = choice.Value; } } } } return(validChoices); }
private static void HandleShortOverrides( HashSet <string> takenAliases, List <string> aliases, List <string> errors, Func <string, bool> isAliasTaken, CliTemplateParameter parameter) { foreach (string shortNameOverride in parameter.ShortNameOverrides) { if (shortNameOverride == string.Empty) { // it was explicitly empty string in the host file. continue; } if (!string.IsNullOrEmpty(shortNameOverride)) { // short name starting point was explicitly specified string fullShortNameOverride = "-" + shortNameOverride; if (!isAliasTaken(fullShortNameOverride)) { aliases.Add(fullShortNameOverride); takenAliases.Add(fullShortNameOverride); continue; } //if taken, we append prefix string qualifiedShortNameOverride = "-p:" + shortNameOverride; if (!isAliasTaken(qualifiedShortNameOverride)) { aliases.Add(qualifiedShortNameOverride); takenAliases.Add(qualifiedShortNameOverride); continue; } errors.Add(string.Format(LocalizableStrings.AliasAssignmentCoordinator_Error_ShortAlias, parameter.Name, fullShortNameOverride, qualifiedShortNameOverride)); } } }