Examples/ChangesByCommitType.ugit.ps1

<#
.SYNOPSIS
    Generates a Mermaid graph of changes by commit type.
.DESCRIPTION
    Generates a Mermaid graph of changes 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 {
        git log
    }

$groupedChangedSet = $commitList |
    ? { $_.CommitType } |
    Group-Object { $_.CommitType } -NoElement

$mermaidDiagram = @(
    "pie title Changes by Commit Type"
    foreach ($changeSet in $groupedChangedSet) {
        (' ' * 4),'"',$($changeSet.Name),'"',' : ',($changeSet.Count) -join ''
    }
) -join [Environment]::NewLine

if ($env:GITHUB_STEP_SUMMARY) { 
"
~~~mermaid
$mermaidDiagram
~~~

"
 |
        Out-File -Append -FilePath $env:GITHUB_STEP_SUMMARY
}