You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.2 KiB
73 lines
2.2 KiB
# Define the function to get version variables
|
|
function Get-GPUStackVersionVar {
|
|
# Get the build date
|
|
$BUILD_DATE = Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ'
|
|
|
|
# Initialize other variables
|
|
$GIT_TREE_STATE = "unknown"
|
|
$GIT_COMMIT = "unknown"
|
|
$GIT_VERSION = "unknown"
|
|
|
|
# Check if the source was exported through git archive
|
|
if ('%$Format:%' -eq '%') {
|
|
$GIT_TREE_STATE = "archive"
|
|
$GIT_COMMIT = '$Format:%H$'
|
|
|
|
# Parse the version from '$Format:%D$'
|
|
if ('%$Format:%D$' -match 'tag:\s+(v[^ ,]+)') {
|
|
$GIT_VERSION = $matches[1]
|
|
}
|
|
else {
|
|
$GIT_VERSION = $GIT_COMMIT.Substring(0, 7)
|
|
}
|
|
|
|
# Respect specified version
|
|
$GIT_VERSION = $env:VERSION -or $GIT_VERSION
|
|
return
|
|
}
|
|
|
|
# Return if git client is not found
|
|
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
|
|
$GIT_VERSION = $env:VERSION -or $GIT_VERSION
|
|
return
|
|
}
|
|
|
|
# Find git info via git client
|
|
$GIT_COMMIT = git rev-parse "HEAD^{commit}" 2>$null
|
|
if ($LASTEXITCODE -eq 0) {
|
|
# Check if the tree is clean or dirty
|
|
$gitStatus = (git status --porcelain 2>$null)
|
|
if ($gitStatus) {
|
|
$GIT_TREE_STATE = "dirty"
|
|
}
|
|
else {
|
|
$GIT_TREE_STATE = "clean"
|
|
}
|
|
|
|
# Get the version from HEAD
|
|
$GIT_VERSION = git rev-parse --abbrev-ref HEAD 2>$null
|
|
if ($LASTEXITCODE -eq 0) {
|
|
# Check if HEAD is tagged
|
|
$gitTag = git tag -l --contains HEAD 2>$null | Select-Object -First 1
|
|
if (-not [string]::IsNullOrEmpty($gitTag)) {
|
|
$GIT_VERSION = $gitTag
|
|
}
|
|
}
|
|
|
|
# Set version to 'v0.0.0' if the tree is dirty or version format does not match
|
|
if ($GIT_TREE_STATE -eq "dirty" -or -not ($GIT_VERSION -match '^v([0-9]+)\.([0-9]+)(\.[0-9]+)?(-?[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$')) {
|
|
$GIT_VERSION = "v0.0.0"
|
|
}
|
|
|
|
# Respect specified version
|
|
if ($env:VERSION) {
|
|
$GIT_VERSION = $env:VERSION
|
|
}
|
|
}
|
|
|
|
$global:BUILD_DATE = $BUILD_DATE
|
|
$global:GIT_TREE_STATE = $GIT_TREE_STATE
|
|
$global:GIT_COMMIT = $GIT_COMMIT
|
|
$global:GIT_VERSION = $GIT_VERSION
|
|
}
|