public string GenerateValidName()

in src/AWS.Deploy.Orchestration/Utilities/CloudApplicationNameGenerator.cs [67:114]


        public string GenerateValidName(ProjectDefinition target, List<CloudApplication> existingApplications, DeploymentTypes? deploymentType = null)
        {
            // generate recommendation
            var recommendedPrefix = "deployment";

            if (_fileManager.Exists(target.ProjectPath))
                recommendedPrefix = Path.GetFileNameWithoutExtension(target.ProjectPath) ?? "";
            else if (_directoryManager.Exists(target.ProjectPath))
                recommendedPrefix = Path.GetDirectoryName(target.ProjectPath) ?? "";

            // sanitize recommendation
            recommendedPrefix =
                new string(
                    recommendedPrefix
                        .ToCharArray()
                        .SkipWhile(c => !char.IsLetter(c) && ((int)c) < 127)
                        .Where(c =>
                            char.IsNumber(c) ||
                            char.IsLetter(c) && ((int)c) < 127 ||
                            c == '-')
                        .ToArray());

            // make sure the recommendation doesn't exist already in existingApplications
            var recommendation = recommendedPrefix;
            var suffixString = "";
            var recommendationCharArray = recommendation.ToCharArray();
            for (var i = recommendationCharArray.Length - 1; i >= 0; i--)
            {
                if (char.IsDigit(recommendationCharArray[i]))
                    suffixString = $"{recommendationCharArray[i]}{suffixString}";
                else
                    break;
            }

            var prefix = !string.IsNullOrEmpty(suffixString) ? recommendation[..^suffixString.Length] : recommendedPrefix;
            var suffix = !string.IsNullOrEmpty(suffixString) ? int.Parse(suffixString): 0;
            while (suffix < int.MaxValue)
            {
                var validationResult = IsValidName(recommendation, existingApplications, deploymentType);

                if (validationResult.IsValid)
                    return recommendation;

                recommendation = $"{prefix}{++suffix}";
            }

            throw new ArgumentException("Failed to generate a valid and unique name.");
        }