eng/scripts/Collect-Changelogs.ps1 (50 lines of code) (raw):

# Copyright (c) Microsoft Corporation. All rights reserved. # SPDX-License-Identifier: MIT ############# Collect Changelog script ################### # # This script helps to create the Language release notes by collecting each service's release notes # and generating a single unified release notes doc with the required format and links to be published. # # Usage: # - Run from powershell terminal: `pwsh ./Collect-Changelogs.ps1` # - Enter the Month as a number (i.e. use 11 for November) # # That's it, the script will use the current year and print out the Release Notes in the standard output. # ########################################################### [CmdletBinding()] param( [Parameter(Mandatory=$true)] [ValidateRange(1, 12)] [int] $Month, [Parameter] [string] $DefaultBranchName = 'main' ) $repoRoot = Resolve-Path "$PSScriptRoot/../.."; . ${repoRoot}\eng\common\scripts\SemVer.ps1 . ${repoRoot}\eng\common\scripts\ChangeLog-Operations.ps1 $InstallNotes = ""; $ReleaseNotes = ""; $date = Get-Date -Month $month -Format "yyyy-MM" $date += "-\d\d" Get-ChildItem "$repoRoot/sdk" -Filter CHANGELOG.md -Recurse | Sort-Object -Property Name | % { $changeLogEntries = Get-ChangeLogEntries -ChangeLogLocation $_ $package = $_.Directory.Name $serviceDirectory = $_.Directory.Parent.Name foreach ($changeLogEntry in $changeLogEntries.Values) { if ($changeLogEntry.ReleaseStatus -notmatch $date) { continue; } $version = $changeLogEntry.ReleaseVersion $githubAnchor = $changeLogEntry.ReleaseTitle.Replace("## ", "").Replace(".", "").Replace("(", "").Replace(")", "").Replace(" ", "-") $ReleaseNotes += "### $package [Changelog](https://github.com/Azure/azure-sdk-for-cpp/blob/${DefaultBranchName}/sdk/$serviceDirectory/$package/CHANGELOG.md#$githubAnchor)`n" $changeLogEntry.ReleaseContent | %{ $ReleaseNotes += $_.Replace("###", "####") $ReleaseNotes += "`n" } $ReleaseNotes += "`n" } } return $ReleaseNotes