class RakeTerraform::TaskSets::Terraform
rubocop:disable Metrics/ClassLength
Attributes
delegate[R]
Public Class Methods
define(*args, &configuration_block)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 10 def self.define(*args, &configuration_block) new(*args, &configuration_block).define_on(Rake.application) end
new(*args, &configuration_block)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 16 def initialize(*args, &configuration_block) @opts = args[0] @delegate = RakeDependencies::TaskSets::All.new( task_set_opts, &configuration_block ) end
Public Instance Methods
binary()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 29 def binary @binary ||= File.join(path, binary_directory, binary_name) end
define_on(application)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 24 def define_on(application) @delegate.define_on(application) self end
Private Instance Methods
binary_directory()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 82 def binary_directory @binary_directory ||= 'bin' end
binary_name()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 86 def binary_name @binary_name ||= 'terraform' end
contains_version_number?(result)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 172 def contains_version_number?(result) version_line(result) =~ /#{version}/ end
correct_version?(binary)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 123 def correct_version?(binary) result = StringIO.new command = version_command(binary) log_version_lookup(command) command.execute(stdout: result) log_version_information(result) log_check_outcome(result) contains_version_number?(result) end
dependency()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 69 def dependency @dependency ||= 'terraform' end
exist?(binary)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 119 def exist?(binary) File.exist?(binary) end
exists_with_correct_version?(binary)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 113 def exists_with_correct_version?(binary) log_binary_location(binary) exist?(binary) && correct_version?(binary) end
file_name_template()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 104 def file_name_template @file_name_template ||= 'terraform_<%= @version %>_<%= @os_id %>_amd64<%= @ext %>' end
log_binary_location(binary)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 144 def log_binary_location(binary) logger.info("Terraform binary should be at: #{binary}") end
log_check_outcome(result)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 161 def log_check_outcome(result) logger.debug( "Version: '#{version}' is in version line: " \ "'#{version_line(result)}'?: #{contains_version_number?(result)}" ) end
log_version_information(result)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 155 def log_version_information(result) logger.info( "Terraform version information is: \n#{result}" ) end
log_version_lookup(command)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 148 def log_version_lookup(command) logger.info( 'Fetching terraform version information using command: ' \ "#{command}" ) end
logger()
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/rake_terraform/task_sets/terraform.rb, line 58 def logger @logger ||= @opts[:logger] || Logger.new($stderr, level: Logger.const_get(ENV['TF_LOG'] || 'WARN')) end
namespace()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 65 def namespace @namespace ||= @opts[:namespace] || :terraform end
needs_fetch()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 109 def needs_fetch @needs_fetch ||= ->(_) { return !exists_with_correct_version?(binary) } end
os_ids()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 94 def os_ids @os_ids ||= { mac: 'darwin', linux: 'linux' } end
path()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 77 def path @path ||= @opts[:path] || File.join(Dir.pwd, 'vendor', 'terraform') end
task_set_opts()
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/rake_terraform/task_sets/terraform.rb, line 37 def task_set_opts { namespace: namespace, dependency: dependency, version: version, path: path, type: type, os_ids: os_ids, uri_template: uri_template, file_name_template: file_name_template, binary_directory: binary_directory, needs_fetch: needs_fetch } end
type()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 90 def type @type ||= :zip end
uri_template()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 98 def uri_template @uri_template ||= 'https://releases.hashicorp.com/terraform/<%= @version %>/' \ 'terraform_<%= @version %>_<%= @os_id %>_amd64<%= @ext %>' end
version()
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 73 def version @version ||= @opts[:version] || '0.10.3' end
version_command(binary)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 137 def version_command(binary) Lino::CommandLineBuilder .for_command(binary) .with_flag('-version') .build end
version_line(result)
click to toggle source
# File lib/rake_terraform/task_sets/terraform.rb, line 168 def version_line(result) result.string.lines.first end