Examples/ReleaseNotes.ugit.ps1
<# .SYNOPSIS Generates release notes by commit type. .DESCRIPTION Generates release notes of changes by grouping by the conventional commit type. #> param() Write-Information "Graphing $($MyInvocation.MyCommand.Name) for $($currentBranch.BranchName) branch." $gitRemote = git remote $headBranch = git remote | Select-Object -First 1 | git remote show | Select-Object -ExpandProperty HeadBranch $currentBranch = git branch | ? IsCurrentBranch $commitList = if ($currentBranch.BranchName -ne $headBranch) { git log "$($gitRemote.RemoteName)/$headBranch..$($CurrentBranch.BranchName)" } else { Write-Warning "Not generating Release Notes for everything in $headBranch." return } $groupedChangedSet = $commitList | Group-Object { $_.CommitType } $releaseNoteBulletpoints = @( foreach ($changeSet in $groupedChangedSet) { if ($changeSet.Name) { "* $($changeSet.Name)" $indent = ' ' * 2 } else { "* $($changeSet.Name)" $indent = '' } foreach ($Description in $changeSet.Group | Select-Object -ExpandProperty Description -Unique ) { $indent, '* ', $Description -join '' } } ) -join [Environment]::NewLine if ($env:GITHUB_STEP_SUMMARY) { " ~~~markdown $releaseNoteBulletpoints ~~~ " | Out-File -Append -FilePath $env:GITHUB_STEP_SUMMARY } else { $releaseNoteBulletpoints } |