private IEnumerable CreateManifestBuildConfiguration()

in tool/TeamCity.Docker/TeamCityKotlinSettingsGenerator.cs [504:553]


        private IEnumerable<string> CreateManifestBuildConfiguration(string buildTypeId, string repositoryName, string name, IReadOnlyCollection<IGrouping<string, Image>> images, string imagePostfix, bool? onStaging, params string[] dependencies)
        {   
            yield return $"object {buildTypeId}: BuildType(" + "{";
            yield return $"\t name = \"{name}\"";
            yield return $"\t{_buildNumberPattern}";
            yield return "\t enablePersonalBuilds = false";
            yield return "\t type = BuildTypeSettings.Type.DEPLOYMENT";
            yield return "\t maxRunningBuilds = 1";

            yield return "\t steps {";
            foreach (var line in AddScript("remove manifests", RemoveManifestsScript))
            {
                yield return $"\t\t {line}";
            }

            foreach (var group in images.OrderBy(i => i.Key))
            {
                var groupedByImageId = group.GroupBy(i => i.File.ImageId);
                foreach (var groupByImageId in groupedByImageId)
                {
                    foreach (var line in CreateManifestCommands(repositoryName, group.Key, groupByImageId.Key, imagePostfix, groupByImageId))
                    {
                        yield return $"\t{line}";
                    }
                }
            }

            yield return "\t }";

            foreach (var line in CreateSnapshotDependencies(dependencies, onStaging))
            {
                yield return $"\t{line}";
            }

            var requirements = images.SelectMany(i => i).SelectMany(i => i.File.Requirements).Distinct().ToList();
            foreach (var lines in CreateDockerRequirements(requirements, "windows", MinDockerVersion))
            {
                yield return $"\t{lines}";
            }

            yield return "\t features {";
            foreach (var line in CreateDockerFeature())
            {
                yield return $"\t\t {line}";
            }
            yield return "\t}";

            yield return "})";
            yield return string.Empty;
        }