terminal/tools/PGODatabase/version.ps1

75 lines
1.6 KiB
PowerShell

function MakeVersion ( $major, $minor, $datetimeStamp )
{
$revision, $branch = $datetimeStamp.Split("-", 2)
if ( $branch -eq $null )
{
$branch = ""
}
return [PSCustomObject] @{
Major = $major
Minor = $minor
Revision = $revision
Branch = $branch
}
}
function MakeVersionFromString ( $str )
{
$parts = $str.Split(".")
return MakeVersion ( [int]::Parse($parts[0]) ) ( [int]::Parse($parts[1]) ) $parts[2]
}
function FormatVersion ( $version )
{
$branch = ""
if ( $version.Branch -ne "" )
{
$branch = "-{0}" -f $version.Branch
}
return "{0}.{1}.{2}{3}" -f $version.Major, $version.Minor, $version.Revision, $branch
}
function CompareReleases ( $version1, $version2 )
{
$cmpMajor = [Math]::Sign($version1.Major - $version2.Major)
if ( $cmpMajor -ne 0 )
{
return $cmpMajor
}
return [Math]::Sign($version1.Minor - $version2.Minor)
}
function CompareRevisions ( $version1, $version2 )
{
return [Math]::Sign($version1.Revision - $version2.Revision)
}
function CompareBranches ( $version1, $version2 )
{
return $version1.Branch -eq $version2.Branch
}
function GetDatetimeStamp ( $pgoBranch )
{
$forkSHA = $( git merge-base origin/$pgoBranch HEAD )
if ( $LastExitCode -ne 0 )
{
throw "FAILED: git merge-base"
}
$forkDate = ( Get-Date -Date $( git log -1 $forkSHA --date=iso --pretty=format:"%ad" ) ).ToUniversalTime().ToString("yyMMddHHmm")
if ( $LastExitCode -ne 0 )
{
throw "FAILED: Get forkDate"
}
return $forkDate + "-" + ( $pgoBranch -replace "(/|\.|@|>|<)", "-" )
}