pulumi/scripts/get-version.ps1
2020-04-01 13:35:16 -07:00

56 lines
1.5 KiB
PowerShell

Set-StrictMode -Version 2.0
$ErrorActionPreference="Stop"
git update-index -q --refresh
git diff-files --quiet -- . ':!**/go.mod' ':!**/go.sum' | Out-Null
$dirty=($LASTEXITCODE -ne 0)
try {
git describe --tags --exact-match >$null 2>$null
# If we get here the above did not throw, so we can use the exact tag
$tag = "$(git describe --tags --exact-match)"
# Remove any sub-module prefixes
if ($tag.LastIndexOf("/") -ne -1) {
$tag=$tag.Substring($tag.LastIndexOf("/")+1)
}
if ($dirty) {
Write-Output "$tag+dirty"
} else {
Write-Output "$tag"
}
} catch {
# Otherwise, take the existing tag, increment the patch version and append the timestamp of the commit and hash
$tag=""
try {
git describe --tags --abbrev=0 >$null 2>$null
$tag="$(git describe --tags --abbrev=0)"
} catch {
$tag="v0.0.0"
}
# Remove any sub-module prefixes
if ($tag.LastIndexOf("/") -ne -1) {
$tag=$tag.Substring($tag.LastIndexOf("/")+1)
}
# Remove any pre-release tag
if ($tag.LastIndexOf("-") -ne -1) {
$tag=$tag.Substring(0, $tag.LastIndexOf("-"))
}
$tagParts = $tag.Split('.');
$major = $tagParts[0];
$minor = $tagParts[1];
$patch = $tagParts[2];
$patch = ([int]$patch + 1);
if ($dirty) {
Write-Output "$major.$minor.$patch-dev.$(git show -s --format='%ct+g%h').dirty"
} else {
Write-Output "$major.$minor.$patch-dev.$(git show -s --format='%ct+g%h')"
}
}