public void Generate()

in src/TemplateRefGenerator/MainGenerator.cs [57:129]


    public void Generate(Options options)
    {
        MarkdownGenerator mdGenerator = new(resourceTypeProvider);
        ChangelogGenerator changelogGenerator = new(resourceTypeProvider);

        // clear output folder
        if (fileSystem.Directory.Exists(options.OutputFolder))
        {
            fileSystem.Directory.Delete(options.OutputFolder, true);
        }
        fileSystem.Directory.CreateDirectory(options.OutputFolder);

        var grouping = GetGroupedTypes(options, mdGenerator, configLoader.GetConfiguration()).ToArray();
        foreach (var groupedTypes in grouping)
        {
            Trace.WriteLine($"Processing {groupedTypes.ProviderNamespace}");
            foreach (var (apiVersion, resourceTypes) in groupedTypes.ResourceTypeByApiVersion)
            {
                foreach (var typeName in resourceTypes)
                {
                    var resourceType = resourceTypeProvider.Get(typeName, apiVersion);

                    var unqualifiedResourceType = typeName.Substring(typeName.IndexOf('/') + 1);

                    var mdPath = $"{groupedTypes.ProviderNamespace}/{apiVersion}/{unqualifiedResourceType}.md".ToLowerInvariant();
                    var mdContent = MarkdownGenerator.GenerateMarkdown(groupedTypes, resourceType, configLoader, remarksLoader, isLatestVersionPage: false);
                    WriteFile(options, mdPath, mdContent);
                }
            }

            foreach (var (typeName, apiVersion) in groupedTypes.GetLatestApiVersionByType())
            {
                var resourceType = resourceTypeProvider.Get(typeName, apiVersion);

                var unqualifiedResourceType = typeName.Substring(typeName.IndexOf('/') + 1);

                var mdPath = $"{groupedTypes.ProviderNamespace}/{unqualifiedResourceType}.md".ToLowerInvariant();
                var mdContent = MarkdownGenerator.GenerateMarkdown(groupedTypes, resourceType, configLoader, remarksLoader, isLatestVersionPage: true);
                WriteFile(options, mdPath, mdContent);
            }

            var allVersionsPath = $"{groupedTypes.ProviderNamespace}/allversions.md".ToLowerInvariant();
            var allVersionsMd = AllVersionsGenerator.GenerateMarkdown(groupedTypes);
            WriteFile(options, allVersionsPath, allVersionsMd);

            var referenceTocPath = $"{groupedTypes.ProviderNamespace}/toc.yml".ToLowerInvariant();
            var referenceTocContent = TocGenerator.GenerateReferenceToc(groupedTypes);
            WriteFile(options, referenceTocPath, referenceTocContent);

            var changeLog = changelogGenerator.GetChanges(groupedTypes);
            foreach (var resourceTypeChange in changeLog.ResourceTypeChanges)
            {
                var typeName = resourceTypeChange.ResourceType;
                var unqualifiedResourceType = typeName.Substring(typeName.IndexOf('/') + 1);

                var mdPath = $"{groupedTypes.ProviderNamespace}/change-log/{unqualifiedResourceType}.md".ToLowerInvariant();
                var mdContent = ChangelogGenerator.GenerateChangeLog(resourceTypeChange);
                WriteFile(options, mdPath, mdContent);
            }

            var summaryChangelogPath = $"{groupedTypes.ProviderNamespace}/change-log/summary.md".ToLowerInvariant();
            var summaryChangelogMd = ChangelogGenerator.GenerateSummaryChangeLog(changeLog);
            WriteFile(options, summaryChangelogPath, summaryChangelogMd);

            var changeLogTocPath = $"{groupedTypes.ProviderNamespace}/change-log/toc.yml".ToLowerInvariant();
            var changeLogTocContent = TocGenerator.GenerateChangeLogToc(groupedTypes);
            WriteFile(options, changeLogTocPath, changeLogTocContent);
        }

        var rootTocPath = "toc.yml";
        var rootTocContent = TocGenerator.GenerateRootToc(configLoader, grouping.Select(x => x.ProviderNamespace).ToArray());
        WriteFile(options, rootTocPath, rootTocContent);
    }