functions/AnyInterestingPRs.ps1

function AnyInterestingPRs
{
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [AllowNull()]
        [AllowEmptyCollection()]
        [string[]]
        $Titles,

        [Parameter(Mandatory=$true)]
        [ValidateSet('patch','minor','major')]
        [string]
        $MaxSemVerIncrement,

        [Parameter()]
        [string[]]
        $PackageWildcardExpressions = @()
    )

    $ErrorActionPreference = 'Stop'

    Enum semver_upgrade_type {
        patch = 0
        minor = 1
        major = 2
    }
    $maxSemVerIncrementAsEnum = [semver_upgrade_type]$MaxSemVerIncrement

    $result = $false
    foreach ($prTitle in $Titles) {
        Write-Verbose ('Checking PR: {0}' -f $prTitle)
        
        # parse the PR title
        $packageName,$fromVersion,$toVersion,$folder = ParsePrTitle -Title $prTitle
        # For non-Dependabot PRs we won't get a parsed title back, but this is fine. For normal user PRs
        # don't expect to have to wait for other related, in-flights PR to finish (like we do for Dependabot PRs)
        if (!$packageName) {
            break;
        }
        Write-Verbose ('Package: {0}' -f $packageName)

        # apply package filter
        $matchFound = IsPackageInteresting -PackageName $packageName -PackageWildcardExpressions $PackageWildcardExpressions
        Write-Verbose ('Match Found?: {0}' -f $matchFound)

        # derive upgrade type
        [semver_upgrade_type]$upgradeType = GetSemVerIncrement -FromVersion $fromVersion -ToVersion $toVersion

        if ($matchFound -and ($upgradeType -le $maxSemVerIncrementAsEnum)) {
            Write-Verbose 'Setting result to true'
            $result = $true
        }
    }

    Write-Verbose ('Result: {0}' -f $result)
    return $result
}