# frozen_string_literal: true module RSpec module Terraform module Helpers module Actions module ExecuteIfRequired def execute_if_required(name, parameters, &block) log_execute_if_required_starting(name) if should_execute(parameters) log_execute_if_required_continuing block.call else log_execute_if_required_skipping end end private def should_execute(parameters) only_if = parameters[:only_if] only_if_args = only_if ? [parameters].slice(0, only_if.arity) : [] only_if ? only_if.call(*only_if_args) : true end def log_execute_if_required_starting(name) logger&.info("Checking if execution of #{name} required...") end def log_execute_if_required_continuing logger&.info('Execution required. Continuing...') end def log_execute_if_required_skipping logger&.info('Execution not required. Skipping...') end end end end end end