Private/Resolve-CloudTagProvider.ps1

function Resolve-CloudTagProvider {
    [CmdletBinding()]
    param(
        [string]$Provider,

        [string]$Project,
        [string]$Resource
    )

    if (-not [string]::IsNullOrWhiteSpace($Provider)) {
        if ($Provider -notin @('Azure', 'AWS', 'GCP')) {
            throw [System.ArgumentException]::new(
                "Provider '$Provider' is not supported. Valid values are Azure, AWS, and GCP."
            )
        }

        return $Provider
    }

    if (-not [string]::IsNullOrWhiteSpace($Project) -or -not [string]::IsNullOrWhiteSpace($Resource)) {
        return 'GCP'
    }

    $currentProvider = Get-CurrentCloudProvider

    if (-not [string]::IsNullOrWhiteSpace($currentProvider)) {
        return $currentProvider
    }

    throw [System.ArgumentException]::new(
        "No provider was supplied for tag lookup and no current provider is set. Pass -Provider or run 'Connect-Cloud -Provider <Azure|AWS|GCP>' first."
    )
}