From 04f68be19ee050dc32bf06a77833feea06a96fe0 Mon Sep 17 00:00:00 2001 From: Aleksandr Chebotov <47745270+al-cheb@users.noreply.github.com> Date: Tue, 14 Jun 2022 09:34:46 +0200 Subject: [PATCH] [Windows] Improve Get-GitHubPackageDownloadUrl function (#5724) * Improve Get-GitHubPackageDownloadUrl function * Use Select-String --- .../win/scripts/ImageHelpers/InstallHelpers.ps1 | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/images/win/scripts/ImageHelpers/InstallHelpers.ps1 b/images/win/scripts/ImageHelpers/InstallHelpers.ps1 index 7d845621a..338bff001 100644 --- a/images/win/scripts/ImageHelpers/InstallHelpers.ps1 +++ b/images/win/scripts/ImageHelpers/InstallHelpers.ps1 @@ -590,13 +590,21 @@ function Get-GitHubPackageDownloadUrl { if ($Version -eq "latest") { $Version = "*" } + $json = Invoke-RestMethod -Uri "https://api.github.com/repos/${RepoOwner}/${RepoName}/releases?per_page=${SearchInCount}" - $versionToDownload = ($json.Where{ $_.prerelease -eq $IsPrerelease }.tag_name | - Select-String -Pattern "\d+.\d+.\d+").Matches.Value | - Where-Object {$_ -Like "${Version}.*" -or $_ -eq ${Version}} | - Sort-Object {[version]$_} | + $tags = $json.Where{ $_.prerelease -eq $IsPrerelease -and $_.assets }.tag_name + $versionToDownload = $tags | + Select-String -Pattern "\d+.\d+.\d+" | + ForEach-Object { $_.Matches.Value } | + Where-Object { $_ -like "$Version.*" -or $_ -eq $Version } | + Sort-Object { [version]$_ } | Select-Object -Last 1 + if (-not $versionToDownload) { + Write-Host "Failed to get a tag name from ${RepoOwner}/${RepoName} releases" + exit 1 + } + $UrlFilter = $UrlFilter -replace "{BinaryName}",$BinaryName -replace "{Version}",$versionToDownload $downloadUrl = $json.assets.browser_download_url -like $UrlFilter