public string GenerateValidName()

in src/AWS.Deploy.Orchestration/Utilities/CloudApplicationNameGenerator.cs [46:80]


        public string GenerateValidName(ProjectDefinition target, List<CloudApplication> existingApplications)
        {
            // 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 suffix = 1;
            while (suffix < 100)
            {
                if (existingApplications.All(x => x.StackName != recommendation) && IsValidName(recommendation))
                    return recommendation;

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

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