@@ -83,6 +83,31 @@ function Match-Filenames {
8383 return $position
8484}
8585
86+ # Checks if a release is a pre-release based on GitHub API flag and version tag keywords
87+ # Pre-release keywords include: -rc (release candidate), -beta, -alpha, -preview, -pre
88+ function Test-IsPrerelease {
89+ param (
90+ [Parameter (Mandatory = $true )]
91+ $release
92+ )
93+
94+ # Check if marked as pre-release by GitHub
95+ if ($release.prerelease -eq $true ) {
96+ return $true
97+ }
98+
99+ # Check for common pre-release keywords in tag name
100+ # This catches versions like v2.50.0-rc, v1.0.0-beta, v1.0.0-alpha, etc.
101+ $prereleaseKeywords = @ (' -rc' , ' -beta' , ' -alpha' , ' -preview' , ' -pre' )
102+ foreach ($keyword in $prereleaseKeywords ) {
103+ if ($release.tag_name -ilike " *$keyword *" ) {
104+ return $true
105+ }
106+ }
107+
108+ return $false
109+ }
110+
86111# Uses the GitHub api in order to fetch the current download links for the latest releases of the repo.
87112function Fetch-DownloadUrl {
88113 param (
@@ -137,26 +162,10 @@ function Fetch-DownloadUrl {
137162 # Skip pre-release versions unless explicitly included
138163 # Pre-releases include RC (Release Candidate), beta, alpha, and other test versions
139164 if (-not $includePrerelease ) {
140- # Check if marked as pre-release by GitHub
141- if ($i.prerelease -eq $true ) {
165+ if (Test-IsPrerelease $i ) {
142166 Write-Verbose " Skipping pre-release version: $ ( $i.tag_name ) "
143167 continue
144168 }
145-
146- # Check for common pre-release keywords in tag name
147- # This catches versions like v2.50.0-rc, v1.0.0-beta, v1.0.0-alpha, etc.
148- $prereleaseKeywords = @ (' -rc' , ' -beta' , ' -alpha' , ' -preview' , ' -pre' )
149- $isPrerelease = $false
150- foreach ($keyword in $prereleaseKeywords ) {
151- if ($i.tag_name -ilike " *$keyword *" ) {
152- Write-Verbose " Skipping version with pre-release keyword '$keyword ': $ ( $i.tag_name ) "
153- $isPrerelease = $true
154- break
155- }
156- }
157- if ($isPrerelease ) {
158- continue
159- }
160169 }
161170
162171 if (-not ($i.assets -is [array ])) {
@@ -202,18 +211,7 @@ function Fetch-DownloadUrl {
202211 foreach ($release in $info ) {
203212 # Apply the same filtering logic
204213 if (-not $includePrerelease ) {
205- if ($release.prerelease -eq $true ) {
206- continue
207- }
208- $prereleaseKeywords = @ (' -rc' , ' -beta' , ' -alpha' , ' -preview' , ' -pre' )
209- $isPrerelease = $false
210- foreach ($keyword in $prereleaseKeywords ) {
211- if ($release.tag_name -ilike " *$keyword *" ) {
212- $isPrerelease = $true
213- break
214- }
215- }
216- if ($isPrerelease ) {
214+ if (Test-IsPrerelease $release ) {
217215 continue
218216 }
219217 }
0 commit comments