ps/Modules/Alkami.PowerShell.Common/Public/Compare-ReleaseMetadata.ps1

68 lines
1.7 KiB
PowerShell
Raw Normal View History

2023-05-30 22:51:22 -07:00
function Compare-ReleaseMetadata {
<#
.SYNOPSIS
Compare two version release metadata parts for equivalence using the same pattern as Compare-SemVer.
This function principally intended to be called from Compare-SemVer, prefer that over this.
.PARAMETER Version1Metadata
[string] A portion of a version for comparing/evaluating just the portion of the metadata
.PARAMETER Version2Metadata
[string] A portion of a version for comparing/evaluating just the portion of the metadata
#>
[CmdletBinding()]
[OutputType([int])]
param(
[string]$Version1Metadata,
[string]$Version2Metadata
)
if((-not $Version1Metadata) -and (-not $Version2Metadata))
{
return 0
}
# For release part, 1.0.0 is newer/greater then 1.0.0-alpha. So return 1 here.
if((-not $Version1Metadata) -and $Version2Metadata)
{
return 1
}
if(($Version1Metadata) -and (-not $Version2Metadata))
{
return -1
}
$version1Parts=$Version1Metadata.Trim('-').Split('.')
$version2Parts=$Version2Metadata.Trim('-').Split('.')
$length = [System.Math]::Min($version1Parts.Length, $version2Parts.Length)
for ($i = 0; ($i -lt $length); $i++)
{
$result = Compare-MetadataPart -Version1Part $version1Parts[$i] -Version2Part $version2Parts[$i]
if ($result -ne 0)
{
return $result
}
}
# so far we found two versions are the same. If length is the same, we think two version are indeed the same
if($version1Parts.Length -eq $version1Parts.Length)
{
return 0
}
# 1.0.0-alpha < 1.0.0-alpha.1
if($version1Parts.Length -lt $length)
{
return -1
}
else
{
return 1
}
}