Sha256: be9a9b3efe32ca6d59d496d515612e6062048c3c686618a0d23dd3eb9ea4779a

Contents?: true

Size: 964 Bytes

Versions: 7

Compression:

Stored size: 964 Bytes

Contents

module Terraspace::Terraform::Hooks
  class Builder
    extend Memoist
    include Dsl
    include DslEvaluator
    include Terraspace::Util

    attr_accessor :name
    def initialize(mod, name)
      @mod, @name = mod, name
      @file = "#{Terraspace.root}/config/cli/hooks.rb"
      @hooks = {before: {}, after: {}}
    end

    def build
      return @hooks unless File.exist?(@file)
      evaluate_file(@file)
      @hooks.deep_stringify_keys!
    end
    memoize :build

    def run_hooks
      build
      run_hook("before")
      yield if block_given?
      run_hook("after")
    end

    def run_hook(type)
      execute = @hooks.dig(type, @name.to_s, "execute")
      return unless execute

      exit_on_fail = @hooks.dig(type, @name.to_s, "exit_on_fail")
      exit_on_fail = exit_on_fail.nil? ? true : exit_on_fail

      logger.info "Running #{type} hook"
      Terraspace::Shell.new(@mod, execute, exit_on_fail: exit_on_fail).run
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
terraspace-0.3.6 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.3.5 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.3.4 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.3.3 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.3.2 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.3.1 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.3.0 lib/terraspace/terraform/hooks/builder.rb