mirror of
https://github.com/cmderdev/cmder.git
synced 2025-11-09 05:39:03 +08:00
Refactor: Extract pre-release check to helper function
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
This commit is contained in:
@@ -83,6 +83,31 @@ function Match-Filenames {
|
|||||||
return $position
|
return $position
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Checks if a release is a pre-release based on GitHub API flag and version tag keywords
|
||||||
|
# Pre-release keywords include: -rc (release candidate), -beta, -alpha, -preview, -pre
|
||||||
|
function Test-IsPrerelease {
|
||||||
|
param (
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
$release
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check if marked as pre-release by GitHub
|
||||||
|
if ($release.prerelease -eq $true) {
|
||||||
|
return $true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for common pre-release keywords in tag name
|
||||||
|
# This catches versions like v2.50.0-rc, v1.0.0-beta, v1.0.0-alpha, etc.
|
||||||
|
$prereleaseKeywords = @('-rc', '-beta', '-alpha', '-preview', '-pre')
|
||||||
|
foreach ($keyword in $prereleaseKeywords) {
|
||||||
|
if ($release.tag_name -ilike "*$keyword*") {
|
||||||
|
return $true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
|
||||||
# Uses the GitHub api in order to fetch the current download links for the latest releases of the repo.
|
# Uses the GitHub api in order to fetch the current download links for the latest releases of the repo.
|
||||||
function Fetch-DownloadUrl {
|
function Fetch-DownloadUrl {
|
||||||
param (
|
param (
|
||||||
@@ -137,26 +162,10 @@ function Fetch-DownloadUrl {
|
|||||||
# Skip pre-release versions unless explicitly included
|
# Skip pre-release versions unless explicitly included
|
||||||
# Pre-releases include RC (Release Candidate), beta, alpha, and other test versions
|
# Pre-releases include RC (Release Candidate), beta, alpha, and other test versions
|
||||||
if (-not $includePrerelease) {
|
if (-not $includePrerelease) {
|
||||||
# Check if marked as pre-release by GitHub
|
if (Test-IsPrerelease $i) {
|
||||||
if ($i.prerelease -eq $true) {
|
|
||||||
Write-Verbose "Skipping pre-release version: $($i.tag_name)"
|
Write-Verbose "Skipping pre-release version: $($i.tag_name)"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check for common pre-release keywords in tag name
|
|
||||||
# This catches versions like v2.50.0-rc, v1.0.0-beta, v1.0.0-alpha, etc.
|
|
||||||
$prereleaseKeywords = @('-rc', '-beta', '-alpha', '-preview', '-pre')
|
|
||||||
$isPrerelease = $false
|
|
||||||
foreach ($keyword in $prereleaseKeywords) {
|
|
||||||
if ($i.tag_name -ilike "*$keyword*") {
|
|
||||||
Write-Verbose "Skipping version with pre-release keyword '$keyword': $($i.tag_name)"
|
|
||||||
$isPrerelease = $true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($isPrerelease) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-not ($i.assets -is [array])) {
|
if (-not ($i.assets -is [array])) {
|
||||||
@@ -202,18 +211,7 @@ function Fetch-DownloadUrl {
|
|||||||
foreach ($release in $info) {
|
foreach ($release in $info) {
|
||||||
# Apply the same filtering logic
|
# Apply the same filtering logic
|
||||||
if (-not $includePrerelease) {
|
if (-not $includePrerelease) {
|
||||||
if ($release.prerelease -eq $true) {
|
if (Test-IsPrerelease $release) {
|
||||||
continue
|
|
||||||
}
|
|
||||||
$prereleaseKeywords = @('-rc', '-beta', '-alpha', '-preview', '-pre')
|
|
||||||
$isPrerelease = $false
|
|
||||||
foreach ($keyword in $prereleaseKeywords) {
|
|
||||||
if ($release.tag_name -ilike "*$keyword*") {
|
|
||||||
$isPrerelease = $true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($isPrerelease) {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user