Fix to correctly use fallback URL for tools on Windows

This commit is contained in:
Shivam Mathur 2022-02-08 03:52:45 +05:30
parent d9cb143213
commit 948917a97b
No known key found for this signature in database
GPG Key ID: 3E13E4C8591ACC2A

View File

@ -101,7 +101,7 @@ Function Add-Tool() {
Param (
[Parameter(Position = 0, Mandatory = $true)]
[ValidateNotNull()]
$url,
$urls,
[Parameter(Position = 1, Mandatory = $true)]
[ValidateNotNull()]
$tool,
@ -112,23 +112,26 @@ Function Add-Tool() {
if (Test-Path $bin_dir\$tool) {
Copy-Item $bin_dir\$tool -Destination $bin_dir\$tool.old -Force
}
if($url.Count -gt 1) {
$url = $url[0]
}
$tool_path = "$bin_dir\$tool"
foreach ($url in $urls){
if (($url | Split-Path -Extension) -eq ".exe") {
$tool_path = "$tool_path.exe"
}
try {
Invoke-WebRequest -Uri $url -OutFile $tool_path
$status_code = (Invoke-WebRequest -Passthru -Uri $url -OutFile $tool_path).StatusCode
} catch {
if($url -match '.*github.com.*releases.*latest.*') {
try {
$url = $url.replace("releases/latest/download", "releases/download/" + ([regex]::match((Invoke-WebRequest -Uri ($url.split('/release')[0] + "/releases")).Content, "([0-9]+\.[0-9]+\.[0-9]+)/" + ($url.Substring($url.LastIndexOf("/") + 1))).Groups[0].Value).split('/')[0])
Invoke-WebRequest -Uri $url -OutFile $tool_path
$status_code = (Invoke-WebRequest -Passthru -Uri $url -OutFile $tool_path).StatusCode
} catch { }
}
}
if($status_code -eq 200 -and (Test-Path $tool_path)) {
break
}
}
if (((Get-ChildItem -Path $bin_dir/* | Where-Object Name -Match "^$tool(.exe|.phar)*$").Count -gt 0)) {
$bat_content = @()
$bat_content += "@ECHO off"