Sha256: 1776fe898e21219568e4702bbd645fbd26cbd11d1bb4f26ed4ab0c3defcf3802

Contents?: true

Size: 935 Bytes

Versions: 8

Compression:

Stored size: 935 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"
      sh(execute, exit_on_fail: exit_on_fail)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
terraspace-0.2.4 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.2.3 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.2.2 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.2.1 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.2.0 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.1.2 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.1.1 lib/terraspace/terraform/hooks/builder.rb
terraspace-0.1.0 lib/terraspace/terraform/hooks/builder.rb