Class: YleTf::Action::VerifyTerraformVersion

Inherits:
Object
  • Object
show all
Defined in:
lib/yle_tf/action/verify_terraform_version.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ VerifyTerraformVersion

Returns a new instance of VerifyTerraformVersion.



8
9
10
# File 'lib/yle_tf/action/verify_terraform_version.rb', line 8

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object

Raises:



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/yle_tf/action/verify_terraform_version.rb', line 12

def call(env)
  Logger.debug('Verifying Terraform version')

  version = env[:terraform_version] = terraform_version
  raise(Error, 'Terraform not found') if !version

  Logger.debug("Terraform version: #{version}")
  verify_version(env)

  @app.call(env)
end

#terraform_versionObject



24
25
26
27
28
29
# File 'lib/yle_tf/action/verify_terraform_version.rb', line 24

def terraform_version
  # TODO: move `command` to YleTf::System
  Regexp.last_match(1) if `terraform version` =~ /^Terraform v([^\s]+)/
rescue Errno::ENOENT
  nil
end

#verify_version(env) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/yle_tf/action/verify_terraform_version.rb', line 31

def verify_version(env)
  version = env[:terraform_version]
  requirement = env[:config].fetch('terraform', 'version_requirement') { nil }

  if !VersionRequirement.new(requirement).satisfied_by?(version)
    raise Error, "Terraform version '#{requirement}' required, '#{version}' found"
  end
end