in src/TemplateRefGenerator/Generators/ChangelogGenerator.cs [404:470]
private static string GetSummaryVersionChanges(ProviderChangeLog changeLog)
{
var sb = new StringBuilder();
var changesByVersion = changeLog.ResourceTypeChanges
.SelectMany(x => x.Changes.Select(y => (resourceType: x, versioned: y)))
.GroupBy(x => x.versioned.Version);
foreach (var versionChanges in changesByVersion.OrderBy(x => x.Key, ApiVersionComparer.Instance))
{
var apiVersion = versionChanges.Key;
var added = new List<string>();
var updated = new List<string>();
foreach (var resourceTypeChanges in versionChanges.OrderBy(x => x.resourceType.ResourceType, StringComparer.OrdinalIgnoreCase))
{
var resourceTypeChange = resourceTypeChanges.resourceType;;
var versionedChange = resourceTypeChanges.versioned;
if (versionedChange.PrevType is null)
{
added.Add(resourceTypeChange.ResourceType);
}
else if (GetUpdates(resourceTypeChange, versionedChange, versionedChange.Changes).Any())
{
updated.Add(resourceTypeChange.ResourceType);
}
}
sb.Append($"""
## {apiVersion}
""");
if (!added.Any() && !updated.Any())
{
sb.Append($"""
No new or updated resource types.
""");
continue;
}
sb.Append($"""
> [!div class="mx-tableFixed"]
> | New | Updated |
> |-----|---------|
""");
for (var i = 0; i < Math.Max(added.Count, updated.Count); i++)
{
var addedLink = i < added.Count ? GetResourceTypeLink(added[i], apiVersion) : "";
var updatedLink = i < updated.Count ? GetResourceTypeLink(updated[i], apiVersion) : "";
sb.Append($"""
> | {addedLink} | {updatedLink} |
""");
}
}
sb.AppendLine();
return sb.ToString();
}