Private/Resolve-CachePath.ps1

function Resolve-CachePath {
    param(
        [string]$Path
    )

    if ([string]::IsNullOrWhiteSpace($Path)) {
        return $null
    }

    $expanded = [System.Environment]::ExpandEnvironmentVariables($Path)

    $homeDirectory = $null
    try {
        $homeDirectory = & $script:GetUserProfilePathDelegate
    }
    catch {
        $homeDirectory = $null
    }

    if (-not $homeDirectory) {
        $homeDirectory = $HOME
    }

    if ($expanded -and $expanded.StartsWith('~') -and $homeDirectory) {
        if ($expanded.Length -eq 1) {
            $expanded = $homeDirectory
        }
        elseif ($expanded.Length -gt 1 -and ($expanded[1] -eq '/' -or $expanded[1] -eq [char]92)) {
            $relativeSegment = $expanded.Substring(2)
            $expanded = if ($relativeSegment) {
                Join-Path -Path $homeDirectory -ChildPath $relativeSegment
            }
            else {
                $homeDirectory
            }
        }
    }

    $candidate = $expanded

    $qualifier = $null
    try {
        $qualifier = Split-Path -Path $expanded -Qualifier -ErrorAction Stop
    }
    catch {
        $qualifier = $null
    }

    if ($qualifier -and $qualifier -notlike '\\*') {
        $driveName = $qualifier.TrimEnd(':', '\')
        if (-not (Get-PSDrive -Name $driveName -ErrorAction SilentlyContinue)) {
            return $null
        }
    }

    $isRooted = $false
    try {
        $isRooted = & $script:IsPathRootedDelegate $expanded
    }
    catch {
        Write-Verbose "Unable to evaluate rooted state for cache path '$expanded': $($_.Exception.Message)"
        return $null
    }

    if (-not $isRooted) {
        $basePath = $null

        try {
            $basePath = & $script:GetCurrentProviderPathDelegate
        }
        catch {
            $basePath = $null
        }

        if (-not $basePath) {
            try {
                $basePath = & $script:GetCurrentDirectoryDelegate
            }
            catch {
                $basePath = $null
            }
        }

        if (-not $basePath) {
            return $null
        }

        $candidate = Join-Path -Path $basePath -ChildPath $expanded
    }

    try {
        return & $script:GetFullPathDelegate $candidate
    }
    catch {
        Write-Verbose "Unable to resolve cache path '$Path': $($_.Exception.Message)"
        return $null
    }
}