@@ -7,14 +7,23 @@ function Get-TerraformTool {
7
7
[string ]$toolsPath = " .\terraform"
8
8
)
9
9
10
+ $release = $null
11
+
10
12
if ($version -eq " latest" ) {
11
- $versionResponse = Invoke-WebRequest - Uri " https://checkpoint- api.hashicorp.com/v1/check /terraform"
13
+ $versionResponse = Invoke-WebRequest - Uri " https://api.releases. hashicorp.com/v1/releases /terraform?limit=20 "
12
14
if ($versionResponse.StatusCode -ne " 200" ) {
13
15
throw " Unable to query Terraform version, please check your internet connection and try again..."
14
16
}
15
- $version = ($versionResponse ).Content | ConvertFrom-Json | Select-Object - ExpandProperty current_version
16
- $version = $version.TrimStart (" v" )
17
+ $releases = ($versionResponse ).Content | ConvertFrom-Json | Where-Object - Property is_prerelease -EQ $false
18
+ $release = $releases [0 ]
19
+ $version = $releases [0 ].version
17
20
Write-Verbose " Latest version of Terraform is $version "
21
+ } else {
22
+ $versionResponse = Invoke-WebRequest - Uri " https://api.releases.hashicorp.com/v1/releases/terraform/$ ( $version ) "
23
+ if ($versionResponse.StatusCode -ne " 200" ) {
24
+ throw " Unable to query Terraform version, please check the supplied version and try again..."
25
+ }
26
+ $release = ($versionResponse ).Content
18
27
}
19
28
20
29
Write-Verbose " Required version of Terraform is $version "
@@ -45,7 +54,7 @@ function Get-TerraformTool {
45
54
46
55
$zipfilePath = " $unzipdir .zip"
47
56
48
- $url = " https://releases.hashicorp.com/terraform/ $ ( $version ) /terraform_ $ ( $version ) _ $ ( $ osArchitecture.osAndArchitecture ) .zip "
57
+ $url = $release .builds | Where-Object { $_ .arch -eq $osArchitecture .architecture -and $_ .os -eq $ osArchitecture.os } | Select-Object - First 1 - ExpandProperty url
49
58
50
59
if (! (Test-Path $toolsPath )) {
51
60
New-Item - ItemType Directory - Path $toolsPath | Out-String | Write-Verbose
0 commit comments