From aa6b28a2b02bc2bd19328cd480793e09c7daee78 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 7 Nov 2025 14:38:56 +0000 Subject: [PATCH] Refactor: Extract pre-release check to helper function Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com> --- scripts/update.ps1 | 56 ++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/scripts/update.ps1 b/scripts/update.ps1 index 84e38aa..135c1e3 100644 --- a/scripts/update.ps1 +++ b/scripts/update.ps1 @@ -83,6 +83,31 @@ function Match-Filenames { 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. function Fetch-DownloadUrl { param ( @@ -137,26 +162,10 @@ function Fetch-DownloadUrl { # Skip pre-release versions unless explicitly included # Pre-releases include RC (Release Candidate), beta, alpha, and other test versions if (-not $includePrerelease) { - # Check if marked as pre-release by GitHub - if ($i.prerelease -eq $true) { + if (Test-IsPrerelease $i) { Write-Verbose "Skipping pre-release version: $($i.tag_name)" 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])) { @@ -202,18 +211,7 @@ function Fetch-DownloadUrl { foreach ($release in $info) { # Apply the same filtering logic if (-not $includePrerelease) { - if ($release.prerelease -eq $true) { - continue - } - $prereleaseKeywords = @('-rc', '-beta', '-alpha', '-preview', '-pre') - $isPrerelease = $false - foreach ($keyword in $prereleaseKeywords) { - if ($release.tag_name -ilike "*$keyword*") { - $isPrerelease = $true - break - } - } - if ($isPrerelease) { + if (Test-IsPrerelease $release) { continue } }