mirror of
https://github.com/velopack/velopack.git
synced 2025-10-25 15:19:22 +00:00
more intelligent logic for generating previous git tag
This commit is contained in:
49
.github/workflows/release.yml
vendored
49
.github/workflows/release.yml
vendored
@@ -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"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user