Exemple #1
0
        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));
        }
Exemple #2
0
 internal TemplateOption(
     CliTemplateParameter parameter,
     IReadOnlyList <string> aliases)
 {
     TemplateParameter = parameter;
     Aliases           = aliases;
     _option           = parameter.GetOption(aliases);
 }
Exemple #3
0
        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}"));
            }
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        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));
                }
            }
        }