Public/Invoke-Terrafun.ps1
Function Invoke-Terrafun { Param( ) # load configuration $Config = [TerrafunConfig]::new() $Config.ReadConfigFile() # check for new releases $Timespan = New-TimeSpan -Start $Config.LastUpdateCheck -End (Get-Date) if ($Timespan.TotalHours -gt 1) { $Config.AvailableVersions = Get-TerraformVersions $Config.LastUpdateCheck = Get-Date $Config.WriteConfigFile() } # parse cmdline args for version selection $Opts = Resolve-Options -Arguments $args if ($Opts.versionIsPresent -and $Opts.ListIsPresent){ Get-TerraformVersions | Write-Verbose -Verbose Return } if ($Opts.versionIsPresent -and $Opts.versionNumberIsValid){ $ShouldExecuteTerraform = $false if ($ArgOptions.globalVersion){ $Config.DesiredVersion = $Opts.versionNumber $Config.WriteConfigFile() } else{ Set-Content -Path ".terraform-version" -Value $Opts.versionNumber -NoNewline } } # resolve which version of terraform to use $Version = Resolve-Version -Config $Config # install required terraform version $Environment = Install-TerraformVersion -Config $Config -Version $Version.DesiredVersion Write-Verbose -Verbose ("terrafun: platform = {0}, arch = {1}, version_source = {3}, version = {2}" -f $Environment.Platform, $Environment.Arch, $Version.DesiredVersion, $Version.Source) # if we are only managing versions then exit now if ($ShouldExecuteTerraform -eq $false){ Return } # execute terraform & $Environment.BinaryPath $args } |