in src/TemplateRefGenerator/Generators/ChangelogGenerator.cs [167:244]
private static string GetPropertyChanges(ResourceTypeChangeLog resourceTypeChange, VersionedChangeLog versionedChange, ImmutableArray<NamedTypeChangeLog> changes)
{
var sb = new StringBuilder();
var hasChanges = false;
var added = changes.Where(x => x.Before is null).ToArray();
if (added.Any())
{
hasChanges = true;
sb.Append($"""
Added:
""");
foreach (var entry in added.OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase))
{
sb.Append($"""
* {GetTypeLink(resourceTypeChange.ResourceType, versionedChange.Version, entry.Name)}
""");
}
sb.AppendLine();
}
var removed = changes.Where(x => x.After is null).ToArray();
if (removed.Any())
{
hasChanges = true;
sb.Append($"""
Removed:
""");
foreach (var entry in removed.OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase))
{
// Don't use an anchor link - there's nothing to link to for a "removed" property!
sb.Append($"""
* {entry.Name}
""");
}
sb.AppendLine();
}
var updates = GetUpdates(resourceTypeChange, versionedChange, changes).ToArray();
if (updates.Any())
{
hasChanges = true;
sb.Append($"""
Updated:
""");
foreach (var update in updates)
{
sb.Append($"""
{update}
""");
}
sb.AppendLine();
}
if (!hasChanges)
{
sb.Append($"""
No properties added, updated or removed.
""");
}
return sb.ToString();
}