Sha256: 0b021d4dc02135ed6fad8d962b2e0d93e8f79e86ac14713473853d4971a090e0

Contents?: true

Size: 941 Bytes

Versions: 7

Compression:

Stored size: 941 Bytes

Contents

module Kubes::Hooks
  class Builder
    extend Memoist
    include Dsl
    include DslEvaluator
    include Kubes::Logging
    include Kubes::Util::Sh

    attr_accessor :name
    def initialize(name, file)
      @name = name.to_s
      @file = file # IE: .kubes/config/kubectl/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

7 entries across 7 versions & 1 rubygems

Version Path
kubes-0.2.6 lib/kubes/hooks/builder.rb
kubes-0.2.5 lib/kubes/hooks/builder.rb
kubes-0.2.4 lib/kubes/hooks/builder.rb
kubes-0.2.3 lib/kubes/hooks/builder.rb
kubes-0.2.2 lib/kubes/hooks/builder.rb
kubes-0.2.1 lib/kubes/hooks/builder.rb
kubes-0.2.0 lib/kubes/hooks/builder.rb