Fix changelog grab failure when only one header exists. (#27371)

Co-authored-by: Justin Chung <chungjustin@microsoft.com>
This commit is contained in:
Justin Chung
2026-04-28 10:19:06 -07:00
committed by GitHub
co-authored by Justin Chung
parent 65e6a8055c
commit d356e3f0e2
+14 -4
View File
@@ -89,11 +89,21 @@ jobs:
$changelog = Get-Content -Path $filePath
$headingPattern = "^## \[\d+\.\d+\.\d+"
$headingStartLines = $changelog | Select-String -Pattern $headingPattern | Select-Object -ExpandProperty LineNumber
$headingStartLines = @($changelog | Select-String -Pattern $headingPattern | Select-Object -ExpandProperty LineNumber)
if ($headingStartLines.Count -eq 0) {
throw "No release heading matching '$headingPattern' found in $filePath"
}
$startLine = $headingStartLines[0]
$endLine = $headingStartLines[1] - 1
$clContent = $changelog | Select-Object -Skip ($startLine-1) -First ($endLine - $startLine) | Out-String
if ($headingStartLines.Count -ge 2) {
$endLine = $headingStartLines[1] - 1
} else {
# Only one release heading present; take through end of file.
$endLine = $changelog.Count
}
$clContent = $changelog | Select-Object -Skip ($startLine-1) -First ($endLine - $startLine + 1) | Out-String
$StringBuilder = [System.Text.StringBuilder]::new($clContent, $clContent.Length + 2kb)
$StringBuilder.AppendLine().AppendLine() > $null