Class: Terraspace::CLI::CheckSetup

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Defined in:
lib/terraspace/cli/check_setup.rb

Constant Summary collapse

REQUIRED_TERRAFORM_VERSION =

Terraspace requires at least this version of terraform

"0.12"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ CheckSetup

Returns a new instance of CheckSetup.



8
9
10
# File 'lib/terraspace/cli/check_setup.rb', line 8

def initialize(options={})
  @options = options
end

Class Method Details

.check!Object

Used as library call



65
66
67
68
69
70
# File 'lib/terraspace/cli/check_setup.rb', line 65

def check!
  setup = new
  return if setup.ok?
  # run meth designed for CLI and will puts out informative messages about installed version and exit 1 when version is not ok
  setup.run
end

Instance Method Details

#check_required_version!Object



25
26
27
28
29
30
31
32
33
# File 'lib/terraspace/cli/check_setup.rb', line 25

def check_required_version!
  puts "Terraspace requires Terraform v#{REQUIRED_TERRAFORM_VERSION}.x"
  if ok?
    puts "You're all set!"
  else
    puts "The installed version of terraform may not work with terraspace. Recommend using terraform v#{REQUIRED_TERRAFORM_VERSION}.x"
    exit 1
  end
end

#ok?Boolean

Returns:

  • (Boolean)


35
36
37
38
39
40
41
42
# File 'lib/terraspace/cli/check_setup.rb', line 35

def ok?
  version = terraform_version_message.sub(/.*v/,'') # => 0.12.24
  major, minor, _ = version.split('.')
  required_major, required_minor = REQUIRED_TERRAFORM_VERSION.split('.')
  x = major.to_i >= required_major.to_i
  y = minor.to_i >= required_minor.to_i
  x && y
end

#runObject

Used for the CLI



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/terraspace/cli/check_setup.rb', line 13

def run
  puts "Detected Terrspace version: #{Terraspace::VERSION}"
  if terraform_bin
    puts "Detected Terraform bin: #{terraform_bin}"
    puts "Detected #{terraform_version_message}"
    check_required_version!
  else
    puts "Terraform not installed. Unable to detect a terraform command. Please double check that terraform is installed."
    exit 1
  end
end

#terraform_binObject



44
45
46
47
# File 'lib/terraspace/cli/check_setup.rb', line 44

def terraform_bin
  bin_path = `which terraform 2>&1`.strip
  bin_path if $?.success?
end

#terraform_version_messageObject

First line contains the Terraform version info:

$ terraform --version
Terraform v0.12.24

Your version of Terraform is out of date! The latest version
is 0.12.26. You can update by downloading from https://www.terraform.io/downloads.html


58
59
60
# File 'lib/terraspace/cli/check_setup.rb', line 58

def terraform_version_message
  `terraform --version`.split("\n").first.strip
end