Private/Get-PlumberGitTagVersion.ps1

function Get-PlumberGitTagVersion {
    <#
        .SYNOPSIS
        Gets the latest semantic version from git tags on a remote.
    #>

    [CmdletBinding()]
    param (
        [string]
        $Remote = 'origin',

        [bool]
        $IncludePrerelease = $false
    )

    $tagRefs = Invoke-PlumberGit -ArgumentList @('ls-remote', '--tags', $Remote)
    $versions = foreach ($tagRef in @($tagRefs)) {
        if ($tagRef -notmatch 'refs/tags/(?<TagName>[^\^]+)(?:\^\{\})?$') {
            continue
        }

        $version = ConvertTo-PlumberSemVer -VersionName $Matches.TagName
        if (-not $version) {
            continue
        }
        if (-not $IncludePrerelease -and $version.IsPrerelease) {
            continue
        }

        $version
    }

    $versions |
        Sort-Object -Property Version -Descending |
            Select-Object -First 1
}