lib/rspec/terraform/helpers/actions.rb in rspec-terraform-0.1.0.pre.46 vs lib/rspec/terraform/helpers/actions.rb in rspec-terraform-0.1.0.pre.47

- old
+ new

@@ -1,209 +1,12 @@ # frozen_string_literal: true -require_relative '../configuration/var_captor' - -module RSpec - module Terraform - module Helpers - # rubocop:disable Metrics/ModuleLength - module Actions - def execute_if_required(parameters, &block) - only_if = parameters[:only_if] - only_if_args = only_if ? [parameters].slice(0, only_if.arity) : [] - should_execute = only_if ? only_if.call(*only_if_args) : true - - block.call if should_execute - end - - def clean(parameters) - return unless execution_mode == :isolated - - FileUtils.rm_rf(parameters[:configuration_directory]) - FileUtils.mkdir_p(parameters[:configuration_directory]) - end - - def remove(parameters, file) - FileUtils.rm_f( - File.join(parameters[:configuration_directory], file) - ) - end - - def validate(parameters) - missing_parameters = - required_parameters(execution_mode) - .filter { |parameter| parameters[parameter].nil? } - - return if missing_parameters.empty? - - raise_missing_parameters(missing_parameters) - end - - def init(parameters) - init_command.execute(init_parameters(parameters)) - end - - def apply(parameters) - apply_command.execute(apply_parameters(parameters)) - end - - def destroy(parameters) - destroy_command.execute(destroy_parameters(parameters)) - end - - def plan(parameters) - plan_parameters = plan_parameters(parameters) - plan_command.execute(plan_parameters) - plan_parameters[:out] - end - - def show(parameters, plan_file) - stdout = StringIO.new - show_command(stdout: stdout) - .execute(show_parameters(parameters, plan_file)) - stdout.string - end - - def output(parameters) - stdout = StringIO.new - output_command(stdout: stdout) - .execute(output_parameters(parameters)) - stdout.string - end - - private - - def raise_missing_parameters(parameters) - parameters = parameters.collect { |parameter| "`:#{parameter}`" } - if parameters.count == 1 - raise StandardError, - "Required parameter: #{parameters[0]} missing." - else - parameters = "#{parameters[..-2].join(', ')} and #{parameters[-1]}" - raise StandardError, - "Required parameters: #{parameters} missing." - end - end - - def instantiate_command(klass, opts = {}) - klass.new(command_options.merge(opts)) - end - - def init_command - instantiate_command(RubyTerraform::Commands::Init) - end - - def apply_command - instantiate_command(RubyTerraform::Commands::Apply) - end - - def destroy_command - instantiate_command(RubyTerraform::Commands::Destroy) - end - - def plan_command - instantiate_command(RubyTerraform::Commands::Plan) - end - - def show_command(opts = {}) - instantiate_command(RubyTerraform::Commands::Show, opts) - end - - def output_command(opts = {}) - instantiate_command(RubyTerraform::Commands::Output, opts) - end - - def init_parameters(parameters) - init_parameters = parameters.merge( - chdir: parameters[:configuration_directory], - input: false - ) - if execution_mode == :isolated - init_parameters = - init_parameters.merge(from_module: parameters[:source_directory]) - end - - init_parameters - end - - # rubocop:disable Metrics/MethodLength - def apply_parameters(parameters) - apply_parameters = - parameters.merge( - chdir: parameters[:configuration_directory], - input: false, - auto_approve: true - ) - - if parameters[:state_file] - apply_parameters = - apply_parameters.merge(state: parameters[:state_file]) - end - - apply_parameters - end - # rubocop:enable Metrics/MethodLength - - # rubocop:disable Metrics/MethodLength - def destroy_parameters(parameters) - destroy_parameters = - parameters.merge( - chdir: parameters[:configuration_directory], - input: false, - auto_approve: true - ) - - if parameters[:state_file] - destroy_parameters = - destroy_parameters.merge(state: parameters[:state_file]) - end - - destroy_parameters - end - # rubocop:enable Metrics/MethodLength - - # rubocop:disable Metrics/MethodLength - def plan_parameters(parameters) - plan_parameters = - parameters.merge( - chdir: parameters[:configuration_directory], - out: parameters[:plan_file_name] || - "#{SecureRandom.hex[0, 10]}.tfplan", - input: false - ) - - if parameters[:state_file] - plan_parameters = - plan_parameters.merge(state: parameters[:state_file]) - end - - plan_parameters - end - # rubocop:enable Metrics/MethodLength - - def show_parameters(parameters, plan_file) - parameters.merge( - chdir: parameters[:configuration_directory], - path: plan_file, - no_color: true, - json: true - ) - end - - def output_parameters(parameters) - output_parameters = - parameters.merge( - chdir: parameters[:configuration_directory] - ) - - if parameters[:state_file] - output_parameters = - output_parameters.merge(state: parameters[:state_file]) - end - - output_parameters - end - end - # rubocop:enable Metrics/ModuleLength - end - end -end +require_relative './actions/clean' +require_relative './actions/validate' +require_relative './actions/init' +require_relative './actions/apply' +require_relative './actions/destroy' +require_relative './actions/plan' +require_relative './actions/output' +require_relative './actions/show' +require_relative './actions/remove' +require_relative './actions/execute_if_required'