Class: SimplyGenius::Atmos::TerraformExecutor

Inherits:
Object
  • Object
show all
Includes:
FileUtils, GemLogger::LoggerSupport, UI
Defined in:
lib/simplygenius/atmos/terraform_executor.rb

Defined Under Namespace

Classes: ProcessFailed

Instance Method Summary collapse

Methods included from UI

#agree, #ask, #choose, color_enabled, color_enabled=, #display, #error, #notify, #say, #warn

Constructor Details

#initialize(process_env: ENV) ⇒ TerraformExecutor

Returns a new instance of TerraformExecutor.



19
20
21
22
23
24
25
26
27
# File 'lib/simplygenius/atmos/terraform_executor.rb', line 19

def initialize(process_env: ENV)
  @process_env = process_env
  recipe_config_path = "recipes.#{Atmos.config.working_group}"
  @recipes = Array(Atmos.config[recipe_config_path])
  if @recipes.blank?
    logger.warn("Check your configuration, there are no recipes in '#{recipe_config_path}'")
  end
  @compat11 = Atmos.config['atmos.terraform.compat11'].to_s == "true"
end

Instance Method Details

#run(*terraform_args, skip_backend: false, skip_secrets: false, get_modules: false, output_io: nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/simplygenius/atmos/terraform_executor.rb', line 29

def run(*terraform_args, skip_backend: false, skip_secrets: false, get_modules: false, output_io: nil)
  setup_working_dir(skip_backend: skip_backend)

  if get_modules
    logger.debug("Getting modules")
    get_modules_io = StringIO.new
    begin
      execute("get", output_io: get_modules_io)
    rescue TerraformExecutor::ProcessFailed => e
      logger.info(get_modules_io.string)
      raise
    end
  end

  return execute(*terraform_args, skip_secrets: skip_secrets, output_io: output_io)
end