Private/Get-AvmUpdateType.ps1

function Get-AvmUpdateType {
    <#
    .SYNOPSIS
        Classifies the version bump between two semver strings as major, minor, patch, or none.
    .PARAMETER Current
        Current version string (e.g. '0.3.1').
    .PARAMETER Target
        Target version string (e.g. '0.4.0').
    .OUTPUTS
        String: 'major', 'minor', 'patch', or 'none'.
    #>

    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory)][string]$Current,
        [Parameter(Mandatory)][string]$Target
    )

    $cur = ConvertTo-SemVer -Version $Current
    $tgt = ConvertTo-SemVer -Version $Target

    if ($null -eq $cur -or $null -eq $tgt) { return 'unknown' }

    if ($tgt.Major -gt $cur.Major) { return 'major' }
    if ($tgt.Major -eq $cur.Major -and $tgt.Minor -gt $cur.Minor) { return 'minor' }
    if ($tgt.Major -eq $cur.Major -and $tgt.Minor -eq $cur.Minor -and $tgt.Patch -gt $cur.Patch) { return 'patch' }
    if ($tgt -le $cur) { return 'none' }
    return 'unknown'
}