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.
gpustack/hack/lib/windows/version.ps1

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
}