class Terraspace::Terraform::Runner
Attributes
name[R]
Public Class Methods
new(name, options={})
click to toggle source
Calls superclass method
Terraspace::CLI::Base::new
# File lib/terraspace/terraform/runner.rb, line 8 def initialize(name, options={}) @name = name super(options) end
Public Instance Methods
args()
click to toggle source
# File lib/terraspace/terraform/runner.rb, line 61 def args # base at end in case of redirection. IE: terraform output > /path custom.args + custom.var_files + default.args end
current_dir_message()
click to toggle source
# File lib/terraspace/terraform/runner.rb, line 50 def current_dir_message return if @@current_dir_message_shown log "Current directory: #{Terraspace::Util.pretty_path(@mod.cache_dir)}" @@current_dir_message_shown = true end
custom()
click to toggle source
# File lib/terraspace/terraform/runner.rb, line 66 def custom Args::Custom.new(@mod, @name) end
default()
click to toggle source
# File lib/terraspace/terraform/runner.rb, line 71 def default Args::Default.new(@mod, @name, @options) end
log(msg)
click to toggle source
# File lib/terraspace/terraform/runner.rb, line 56 def log(msg) # quiet useful for RemoteState::Fetcher @options[:quiet] ? logger.debug(msg) : logger.info(msg) end
run()
click to toggle source
# File lib/terraspace/terraform/runner.rb, line 13 def run time_took do terraform(name, args) end end
run_internal_hook(type, name)
click to toggle source
# File lib/terraspace/terraform/runner.rb, line 39 def run_internal_hook(type, name) begin klass = "Terraspace::Terraform::Ihooks::#{type.to_s.classify}::#{name.classify}".constantize rescue NameError return end ihook = klass.new(name, @options) ihook.run end
terraform(name, *args)
click to toggle source
# File lib/terraspace/terraform/runner.rb, line 19 def terraform(name, *args) current_dir_message # only show once params = args.flatten.join(' ') command = "terraform #{name} #{params}".squish run_hooks("terraform.rb", name) do run_internal_hook(:before, name) Terraspace::Shell.new(@mod, command, @options.merge(env: custom.env_vars)).run run_internal_hook(:after, name) end rescue Terraspace::SharedCacheError, Terraspace::InitRequiredError @retryer ||= Retryer.new(@mod, @options, name, $!) if @retryer.retry? @retryer.run retry else exit(1) end end
Private Instance Methods
time_took() { || ... }
click to toggle source
# File lib/terraspace/terraform/runner.rb, line 77 def time_took t1 = Time.now yield t2 = Time.now if %w[apply destroy].include?(@name) logger.info "Time took: #{pretty_time(t2-t1)}" end end