class YleTf::Action::VerifyTerraformVersion
Public Class Methods
new(app)
click to toggle source
# File lib/yle_tf/action/verify_terraform_version.rb, line 12 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/yle_tf/action/verify_terraform_version.rb, line 16 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(version, requirement_by_yletf, required_by: 'YleTf') verify_version(version, requirement_by_config(env), required_by: 'config') @app.call(env) end
requirement_by_config(env)
click to toggle source
# File lib/yle_tf/action/verify_terraform_version.rb, line 36 def requirement_by_config(env) requirement = env[:config].fetch('terraform', 'version_requirement') { nil } VersionRequirement.new(requirement) end
requirement_by_yletf()
click to toggle source
# File lib/yle_tf/action/verify_terraform_version.rb, line 41 def requirement_by_yletf VersionRequirement.new(YleTf::TERRAFORM_VERSION_REQUIREMENT) end
terraform_version()
click to toggle source
# File lib/yle_tf/action/verify_terraform_version.rb, line 30 def terraform_version v = YleTf::System.read_cmd('terraform', 'version', error_handler: proc {}) m = /^Terraform v(?<version>[^\s]+)/.match(v) m && m[:version] end
verify_version(version, requirement, **opts)
click to toggle source
# File lib/yle_tf/action/verify_terraform_version.rb, line 45 def verify_version(version, requirement, **opts) if !requirement.satisfied_by?(version) raise Error, "Terraform version '#{requirement}' required by #{opts[:required_by]}, " \ "'#{version}' found" end end