Private/Get-TerraformVersionAvailable.ps1
function Get-TerraformVersionAvailable { <# .SYNOPSIS Get version numbers of available Terraform releases .DESCRIPTION The function gets version numbers of available Terraform releases from HashiCorp's GitHub repository. Either the version tagged as 'latest release' or all tagged versions are queried. .PARAMETER All [Switch] The optional parameter $All specifies to all detected version numbers. .OUTPUTS System.IO.String .EXAMPLE Get-TerraformVersionAvailable .EXAMPLE Get-TerraformVersionAvailable -All .EXAMPLE To process the result for version comparison use [Version] prefix (only working without -All switch because -All switch returns an array of values and also includes alpha/beta releases), e.g.: $AsVersion = [Version]$(Get-TerraformVersionAvailable) #> [CmdletBinding(HelpUri="https://github.com/uplink-systems/powershell-modules/UplinkSystems.Terraform")] [Alias("Get-TfVersionAvailable")] param ( [Parameter()] [switch] $All ) begin { $ErrorActionPreference = 'SilentlyContinue' } process { switch ($All) { $false { $RestMethodUri = 'https://api.github.com/repos/hashicorp/terraform/releases/latest' } $true { $RestMethodUri = 'https://api.github.com/repos/hashicorp/terraform/releases' } } try { $VersionAvailable = ((Invoke-RestMethod -Method GET -Uri $RestMethodUri -ErrorAction Stop).tag_name).SubString(1) return $VersionAvailable } catch { $VersionAvailable = $null return $VersionAvailable } } } |