Skip to content

Commit 5af3985

Browse files
Add for multiple levels of Atx Headers in the CHANGELOG.md (Azure#23997)
Co-authored-by: Chidozie Ononiwu <[email protected]>
1 parent e26ff02 commit 5af3985

File tree

3 files changed

+23
-10
lines changed

3 files changed

+23
-10
lines changed

eng/common/scripts/ChangeLog-Operations.ps1

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
. "${PSScriptRoot}\SemVer.ps1"
44

55
$RELEASE_TITLE_REGEX = "(?<releaseNoteTitle>^\#+\s+(?<version>$([AzureEngSemanticVersion]::SEMVER_REGEX))(\s+(?<releaseStatus>\(.+\))))"
6-
$SECTIONS_HEADER_REGEX = "^###\s(?<sectionName>.*)"
6+
$SECTIONS_HEADER_REGEX = "^###+\s(?<sectionName>.*)"
77
$CHANGELOG_UNRELEASED_STATUS = "(Unreleased)"
88
$CHANGELOG_DATE_FORMAT = "yyyy-MM-dd"
99
$RecommendedSectionHeaders = @("Features Added", "Breaking Changes", "Bugs Fixed", "Other Changes")
@@ -42,14 +42,24 @@ function Get-ChangeLogEntriesFromContent {
4242
$changelogEntry = $null
4343
$sectionName = $null
4444
$changeLogEntries = [Ordered]@{}
45+
$initialAtxHeader= "#"
46+
47+
if ($changeLogContent[0] -match "(?<HeaderLevel>^#+)\s.*")
48+
{
49+
$initialAtxHeader = $matches["HeaderLevel"]
50+
}
51+
52+
$changeLogEntries | Add-Member -NotePropertyName "InitialAtxHeader" -NotePropertyValue $initialAtxHeader
53+
$releaseTitleAtxHeader = $initialAtxHeader + "#"
54+
4555
try {
4656
# walk the document, finding where the version specifiers are and creating lists
4757
foreach ($line in $changeLogContent) {
4858
if ($line -match $RELEASE_TITLE_REGEX) {
4959
$changeLogEntry = [pscustomobject]@{
5060
ReleaseVersion = $matches["version"]
5161
ReleaseStatus = $matches["releaseStatus"]
52-
ReleaseTitle = "## {0} {1}" -f $matches["version"], $matches["releaseStatus"]
62+
ReleaseTitle = "$releaseTitleAtxHeader {0} {1}" -f $matches["version"], $matches["releaseStatus"]
5363
ReleaseContent = @()
5464
Sections = @{}
5565
}
@@ -210,6 +220,7 @@ function New-ChangeLogEntry {
210220
[ValidateNotNullOrEmpty()]
211221
[String]$Version,
212222
[String]$Status=$CHANGELOG_UNRELEASED_STATUS,
223+
[String]$InitialAtxHeader="#",
213224
[String[]]$Content
214225
)
215226

@@ -239,17 +250,20 @@ function New-ChangeLogEntry {
239250
$Content = @()
240251
$Content += ""
241252

253+
$sectionsAtxHeader = $InitialAtxHeader + "##"
242254
foreach ($recommendedHeader in $RecommendedSectionHeaders)
243255
{
244-
$Content += "### $recommendedHeader"
256+
$Content += "$sectionsAtxHeader $recommendedHeader"
245257
$Content += ""
246258
}
247259
}
248260

261+
$releaseTitleAtxHeader = $initialAtxHeader + "#"
262+
249263
$newChangeLogEntry = [pscustomobject]@{
250264
ReleaseVersion = $Version
251265
ReleaseStatus = $Status
252-
ReleaseTitle = "## $Version $Status"
266+
ReleaseTitle = "$releaseTitleAtxHeader $Version $Status"
253267
ReleaseContent = $Content
254268
}
255269

@@ -265,7 +279,7 @@ function Set-ChangeLogContent {
265279
)
266280

267281
$changeLogContent = @()
268-
$changeLogContent += "# Release History"
282+
$changeLogContent += "$($ChangeLogEntries.InitialAtxHeader) Release History"
269283
$changeLogContent += ""
270284

271285
try
@@ -298,7 +312,6 @@ function Remove-EmptySections {
298312
)
299313

300314
$releaseContent = $ChangeLogEntry.ReleaseContent
301-
$sectionsToRemove = @()
302315

303316
if ($releaseContent.Count -gt 0)
304317
{

eng/common/scripts/Prepare-Release.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ $changelogIsValid = Confirm-ChangeLogEntry -ChangeLogLocation $packageProperties
188188

189189
if (!$changelogIsValid)
190190
{
191-
Write-Host "The changelog [$($packageProperties.ChangeLogPath)] is not valid for release. Please make sure it is valid before queuing release build." -ForegroundColor Red
191+
Write-Warning "The changelog [$($packageProperties.ChangeLogPath)] is not valid for release. Please make sure it is valid before queuing release build."
192192
}
193193

194194
git diff -s --exit-code $packageProperties.DirectoryPath

eng/common/scripts/Update-ChangeLog.ps1

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ if ($ReplaceLatestEntryTitle)
113113
{
114114
$entryToBeUpdated = Remove-EmptySections -ChangeLogEntry $entryToBeUpdated
115115
}
116-
$newChangeLogEntry = New-ChangeLogEntry -Version $Version -Status $ReleaseStatus -Content $entryToBeUpdated
116+
$newChangeLogEntry = New-ChangeLogEntry -Version $Version -Status $ReleaseStatus -InitialAtxHeader $ChangeLogEntries.InitialAtxHeader -Content $entryToBeUpdated
117117
LogDebug "Resetting latest entry title to [$($newChangeLogEntry.ReleaseTitle)]"
118118
$ChangeLogEntries.Remove($LatestVersion)
119119
if ($newChangeLogEntry) {
@@ -128,7 +128,7 @@ elseif ($ChangeLogEntries.Contains($Version))
128128
{
129129
LogDebug "Updating ReleaseStatus for Version [$Version] to [$($ReleaseStatus)]"
130130
$ChangeLogEntries[$Version].ReleaseStatus = $ReleaseStatus
131-
$ChangeLogEntries[$Version].ReleaseTitle = "## $Version $ReleaseStatus"
131+
$ChangeLogEntries[$Version].ReleaseTitle = "$($ChangeLogEntries.InitialAtxHeader)# $Version $ReleaseStatus"
132132
if ($SanitizeEntry)
133133
{
134134
$ChangeLogEntries[$Version] = Remove-EmptySections -ChangeLogEntry $ChangeLogEntries[$Version]
@@ -137,7 +137,7 @@ elseif ($ChangeLogEntries.Contains($Version))
137137
else
138138
{
139139
LogDebug "Adding new ChangeLog entry for Version [$Version]"
140-
$newChangeLogEntry = New-ChangeLogEntry -Version $Version -Status $ReleaseStatus
140+
$newChangeLogEntry = New-ChangeLogEntry -Version $Version -Status $ReleaseStatus -InitialAtxHeader $ChangeLogEntries.InitialAtxHeader
141141
if ($newChangeLogEntry) {
142142
$ChangeLogEntries.Insert(0, $Version, $newChangeLogEntry)
143143
}

0 commit comments

Comments
 (0)