75 lines
1.6 KiB
PowerShell
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 "(/|\.|@|>|<)", "-" )
|
|
} |