class HookHandler

Public Class Methods

new(config) click to toggle source
# File lib/hook_handler.rb, line 9
def initialize(config)
        @config = config
end

Public Instance Methods

do_hooks(name) click to toggle source
# File lib/hook_handler.rb, line 13
def do_hooks(name)
        raise HookConfigError, "'hooks.#{name}' must be a list" unless hooks(name).is_a?(Array)

        execute_hooks(name)
end

Private Instance Methods

execute_hook(name) click to toggle source
# File lib/hook_handler.rb, line 36
def execute_hook(name)
        executor = Executor.new(name)
        executor.execute

        [executor.output, executor.exit_code]
end
execute_hooks(name) click to toggle source
# File lib/hook_handler.rb, line 25
def execute_hooks(name)
        hooks(name).each do |hook|
                Output.notice("Running #{name} hook: #{hook}")
                output, exit_code = execute_hook(hook)

                next if exit_code.zero?

                raise HookExecError, "#{name} hook '#{hook}' failed with exit code #{exit_code}:\n#{output}"
        end
end
hooks(name) click to toggle source
# File lib/hook_handler.rb, line 21
def hooks(name)
        @config.dig("hooks", name) || []
end