more intelligent logic for generating previous git tag

This commit is contained in:
Caelan Sayler
2024-11-02 11:13:07 +00:00
committed by Caelan
parent 7e4801de3f
commit da57a99ec5

View File

@@ -94,19 +94,48 @@ jobs:
# Get the previous release tag # Get the previous release tag
Write-Host "Detecting previous release tag..." Write-Host "Detecting previous release tag..."
if ($currentTag -like "*-*") { $gitTags = git tag --list
# For prerelease versions, retain the full tag for output
$previousTag = git tag --list | Where-Object { $_ -like "*-*" } | $tags = $gitTags | ForEach-Object {
ForEach-Object { $fullTag = $_
$versionPart = $_.Split('-')[0] $isPrerelease = $fullTag -like "*-*"
[PSCustomObject]@{ FullTag = $_; Version = [System.Version]$versionPart }
} | Sort-Object Version -Descending | Select-Object -Skip 1 -First 1 | ForEach-Object { $_.FullTag } if ($isPrerelease) {
$releaseArg = "--prerelease" # For prerelease versions, extract the version part before the hyphen
$versionPart = $fullTag.Split('-')[0]
} else {
$versionPart = $fullTag
}
try {
$version = [System.Version]$versionPart
[PSCustomObject]@{
FullTag = $fullTag
Version = $version
IsPrerelease = $isPrerelease
}
} catch {
# Skip tags that cannot be parsed into a System.Version
$null
}
} | Where-Object { $_ -ne $null }
$isCurrentPrerelease = $currentTag -like "*-*"
$latestPrerelease = ($tags | Where-Object { $_.IsPrerelease } | Sort-Object Version -Descending | Select-Object -First 1).FullTag
$latestStable = ($tags | Where-Object { -not $_.IsPrerelease } | Sort-Object Version -Descending | Select-Object -First 1).FullTag
$latestOverall = ($tags | Sort-Object Version -Descending | Select-Object -First 1).FullTag
if ($isCurrentPrerelease) {
$previousTag = $latestOverall
} else { } else {
$previousTag = git tag --list | Where-Object { $_ -notlike "*-*" } | %{ [System.Version]$_ } | Sort-Object -Descending | Select-Object -Skip 1 -First 1 $previousTag = $latestStable
$releaseArg = "--latest"
} }
Write-Host "Current version is prerelease: $isCurrentPrerelease"
Write-Host "Latest prerelease: $latestPrerelease"
Write-Host "Latest stable: $latestStable"
Write-Host "Latest overall: $latestOverall"
Write-Host "---"
Write-Host "Current tag: $currentTag" Write-Host "Current tag: $currentTag"
Write-Host "Previous tag: $previousTag" Write-Host "Previous tag: $previousTag"