Private/Resolve-WingetPackage.ps1

function Resolve-WingetPackage {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [string]$App,

        [string]$VersionSource
    )

    if ($VersionSource) {
        $pathParts = @($VersionSource -split '/')
        if ($pathParts.Count -lt 4 -or
            $pathParts[0] -ne $script:ManifestPath -or
            $pathParts[1] -notmatch '^[0-9a-z]$' -or
            @($pathParts | Where-Object { -not $_ -or $_ -eq '.' -or $_ -eq '..' }).Count -gt 0) {
            throw "Invalid VersionSource format. Expected format: 'manifests/[letter]/[Publisher]/[Package]/...'"
        }

        $packageParts = @($pathParts[2..($pathParts.Count - 1)])
        $packageIdentifier = $packageParts -join '.'
        return [PSCustomObject]@{
            Publisher = $packageParts[0]
            Package   = $packageParts[1..($packageParts.Count - 1)] -join '.'
            Path      = $VersionSource
            PackageId = $packageIdentifier
        }
    }

    $publisher = $null
    $package = $null
    if ($App -match '^([^.]+)\.(.+)$') {
        $publisher = $Matches[1]
        $package = $Matches[2]
    } elseif ($App -match '^([^/]+)/(.+)$') {
        $publisher = $Matches[1]
        $package = $Matches[2]
    }

    if ($publisher -and $package) {
        $packagePath = "$script:ManifestPath/$($publisher.Substring(0, 1).ToLower())/$publisher/$($package -replace '\.', '/')"
        $packageIdentifier = "$publisher.$package"
        return [PSCustomObject]@{
            Publisher = $publisher
            Package   = $package
            Path      = $packagePath
            PackageId = $packageIdentifier
        }
    }

    return Search-WingetPackage -App $App
}