class TerraformWrapper::Shared::Latest

Public Instance Methods

version() click to toggle source
# File lib/terraform-wrapper/shared/latest.rb, line 34
def version
  @version ||= refresh

  return @version
end

Private Instance Methods

refresh() click to toggle source
# File lib/terraform-wrapper/shared/latest.rb, line 46
def refresh
  logger.info("Finding latest available Terraform release...")

  response = Net::HTTP.get_response(URI("https://checkpoint-api.hashicorp.com/v1/check/terraform"))

  logger.fatal("Hashicorp Checkpoint did not return status 200 for latest version check!") if response.code != "200"
  logger.fatal("Response body from Hashicorp Checkpoint is not permitted!")                if not response.class.body_permitted?
  logger.fatal("Response body from Hashicorp Checkpoint is empty!")                        if response.body.nil?

  body = JSON.parse(response.body)

  logger.fatal("Hashicorp Checkpoint JSON response did not include latest available Terraform version!") if not body.key?("current_version")
  logger.fatal("Hashicorp Checkpoint indicated latest available version of Terraform is blank!")         if body["current_version"].empty?

  version = body["current_version"]

  logger.success("Latest available Terraform release found: #{version}")

  return version
end