68 lines
1.7 KiB
PowerShell
68 lines
1.7 KiB
PowerShell
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
|
|
}
|
|
}
|