# frozen_string_literal: true require 'ruby_terraform' require 'securerandom' require_relative './command_instantiation' module RSpec module Terraform module Helpers module Actions module Plan include CommandInstantiation def plan(parameters) plan_parameters = plan_parameters(parameters) plan_command.execute(plan_parameters) plan_parameters[:out] end private def plan_command instantiate_command(RubyTerraform::Commands::Plan) end def plan_parameters(parameters) with_plan_state_file_parameters( with_plan_standard_parameters(parameters) ) end def with_plan_standard_parameters(parameters) parameters.merge( chdir: parameters[:configuration_directory], out: parameters[:plan_file_name] || "#{SecureRandom.hex[0, 10]}.tfplan", input: false ) end def with_plan_state_file_parameters(parameters) if parameters[:state_file] return parameters.merge(state: parameters[:state_file]) end parameters end end end end end end