Functions/Resolve-WhiskeyNuGetPackageVersion.ps1

function Resolve-WhiskeyNuGetPackageVersion
{
    [CmdletBinding()]
    param(
        
        [Parameter(Mandatory=$true)]
        [string]
        # The name of the NuGet package to download.
        $NuGetPackageName,

        [string]
        # The version of the package to download. Must be a three part number, i.e. it must have a MAJOR, MINOR, and BUILD number.
        $Version,

        [string]
        $NugetPath = (Join-Path -Path $PSScriptRoot -ChildPath '..\bin\NuGet.exe' -Resolve)
    )

    Set-StrictMode -Version 'Latest'
    Use-CallerPreference -Cmdlet $PSCmdlet -SessionState $ExecutionContext.SessionState

    if( -not $Version )
    {
        Set-Item -Path 'env:EnableNuGetPackageRestore' -Value 'true'
        $Version = & $NugetPath list ('packageid:{0}' -f $NuGetPackageName) |
                        Where-Object { $_ -match $NuGetPackageName } |
                        Where-Object { $_ -match ' (\d+\.\d+\.\d+.*)' } |
                        ForEach-Object { $Matches[1] }
        if( -not $Version )
        {
            Write-Error ("Unable to find latest version of package '{0}'." -f $NuGetPackageName)
            return
        }
    }
    elseif( [Management.Automation.WildcardPattern]::ContainsWildcardCharacters($version) )
    {
        Write-Error "Wildcards are not allowed for NuGet packages yet because of a bug in the nuget.org search API (https://github.com/NuGet/NuGetGallery/issues/3274)."
        return
    }
    return $Version
}