Sha256: d53bad9a11e1b0d1e07b659bc7d00748391b2352a0c849ea406528660c848f2b

Contents?: true

Size: 1.1 KB

Versions: 14

Compression:

Stored size: 1.1 KB

Contents

module Ufo::Hooks
  class Builder
    extend Memoist
    include Dsl
    include DslEvaluator
    include Ufo::Utils::Logging

    attr_accessor :name
    def initialize(options={})
      @options = options
      @file = options[:file] # IE: docker.rb
      @dsl_file = "#{Ufo.root}/.ufo/config/hooks/#{@file}"
      @name = options[:name].to_s
      @hooks = {before: {}, after: {}}
    end

    def build
      evaluate_file(@dsl_file)
      @hooks.deep_stringify_keys!
    end
    memoize :build

    def run_hooks
      build
      run_each_hook("before")
      out = yield if block_given?
      run_each_hook("after")
      out
    end

    def run_each_hook(type)
      hooks = @hooks.dig(type, @name) || []
      hooks.each do |hook|
        run_hook(type, hook)
      end
    end

    def run_hook(type, hook)
      return unless run?(hook)

      id = "#{type} #{@name}"
      label = " label: #{hook["label"]}" if hook["label"]
      logger.info  "Hook: Running #{id} hook#{label}".color(:cyan) if Ufo.config.hooks.show
      Runner.new(hook).run
    end

    def run?(hook)
      !!hook["execute"]
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
ufo-6.3.13 lib/ufo/hooks/builder.rb
ufo-6.3.12 lib/ufo/hooks/builder.rb
ufo-6.3.11 lib/ufo/hooks/builder.rb
ufo-6.3.10 lib/ufo/hooks/builder.rb
ufo-6.3.9 lib/ufo/hooks/builder.rb
ufo-6.3.8 lib/ufo/hooks/builder.rb
ufo-6.3.7 lib/ufo/hooks/builder.rb
ufo-6.3.6 lib/ufo/hooks/builder.rb
ufo-6.3.5 lib/ufo/hooks/builder.rb
ufo-6.3.4 lib/ufo/hooks/builder.rb
ufo-6.3.3 lib/ufo/hooks/builder.rb
ufo-6.3.2 lib/ufo/hooks/builder.rb
ufo-6.3.1 lib/ufo/hooks/builder.rb
ufo-6.3.0 lib/ufo/hooks/builder.rb