Private/Get-FylgyrChangedWorkflowPath.ps1

function Get-FylgyrChangedWorkflowPath {
    [CmdletBinding()]
    [OutputType([string[]])]
    param(
        [Parameter(Mandatory)]
        [ValidatePattern('^(?!-)[a-zA-Z0-9._/-]+$')]
        [string]$SinceRef
    )

    $changed = & git diff --name-only $SinceRef HEAD 2>&1
    if ($LASTEXITCODE -ne 0) {
        throw "Failed to read changed files from git diff: $changed"
    }

    $workflowPathList = [System.Collections.Generic.List[string]]::new()
    foreach ($path in @($changed)) {
        if ([string]::IsNullOrWhiteSpace($path)) {
            continue
        }

        if ($path -match '^\.github/workflows/.*\.ya?ml$') {
            $workflowPathList.Add($path)
        }
    }

    $workflowPaths = [string[]]($workflowPathList | Sort-Object -Unique)

    return $workflowPaths
}