Sha256: 9532888bc501394514a864874b0dfdd8bd048300b8c1082b9e7f9d40b5eaa8e1

Contents?: true

Size: 1.24 KB

Versions: 9

Compression:

Stored size: 1.24 KB

Contents

require 'fileutils'

require_relative 'download'
require_relative 'os'
require_relative 'command'

module TerraformDevKit
  class TerragruntInstaller
    EXTENSION = (OS.host_os == 'windows' ? '.exe' : '').freeze
    LOCAL_FILE_NAME = "terragrunt#{EXTENSION}".freeze

    def self.installed_terragrunt_version
      version = Command.run('terragrunt --version')[0]
      match = /terragrunt version v(\d+\.\d+\.\d+)/.match(version)
      match[1] unless match.nil?
    rescue
      nil
    end

    def self.install_local(version, directory: Dir.pwd)
      if installed_terragrunt_version == version
        puts 'Terragrunt already installed'
        return
      end

      FileUtils.mkdir_p(directory)
      Dir.chdir(directory) do
        download_terragrunt(version)

        unless TerraformDevKit::OS.host_os == 'windows'
          FileUtils.chmod('u+x', LOCAL_FILE_NAME)
        end
      end
    end

    private_class_method
    def self.download_terragrunt(version)
      TerraformDevKit.download_file(
        "https://github.com/gruntwork-io/terragrunt/releases/download/v#{version}/terragrunt_#{OS.host_os}_amd64#{EXTENSION}",
        LOCAL_FILE_NAME,
        force_download: true
      )
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
TerraformDevKit-0.1.14 lib/TerraformDevKit/terragrunt_installer.rb
TerraformDevKit-0.1.13 lib/TerraformDevKit/terragrunt_installer.rb
TerraformDevKit-0.1.12 lib/TerraformDevKit/terragrunt_installer.rb
TerraformDevKit-0.1.11 lib/TerraformDevKit/terragrunt_installer.rb
TerraformDevKit-0.1.10 lib/TerraformDevKit/terragrunt_installer.rb
TerraformDevKit-0.1.9 lib/TerraformDevKit/terragrunt_installer.rb
TerraformDevKit-0.1.8 lib/TerraformDevKit/terragrunt_installer.rb
TerraformDevKit-0.1.7 lib/TerraformDevKit/terragrunt_installer.rb
TerraformDevKit-0.1.6 lib/TerraformDevKit/terragrunt_installer.rb