Class: Kamaze::Project::Tools::Git::Hooks

Inherits:
Util show all
Extended by:
Concern::Helper
Defined in:
lib/kamaze/project/tools/git/hooks.rb

Overview

Provide hooks

Kind of factory registering and building hooks

Defined Under Namespace

Classes: BaseHook, PreCommit

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(repository) ⇒ Hooks

Returns a new instance of Hooks.

Parameters:



46
47
48
49
50
51
52
53
54
55
# File 'lib/kamaze/project/tools/git/hooks.rb', line 46

def initialize(repository)
  @hooks = {}
  @repository = repository

  [:pre_commit].each { |n| self.class.register(n) }

  self.class.registered_hooks.each do |name, klass|
    @hooks[name] = klass.new(repository)
  end
end

Class Attribute Details

.registered_hooksObject (readonly)

Returns the value of attribute registered_hooks.



26
27
28
# File 'lib/kamaze/project/tools/git/hooks.rb', line 26

def registered_hooks
  @registered_hooks
end

Instance Attribute Details

#repositoryKamaze::Project::Tools::Git (readonly, protected)



71
72
73
# File 'lib/kamaze/project/tools/git/hooks.rb', line 71

def repository
  @repository
end

Class Method Details

.helperSys::Proc::Helper (protected) Originally defined in module Concern::Helper

Returns:

  • (Sys::Proc::Helper)

.register(name, klass = nil) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/kamaze/project/tools/git/hooks.rb', line 28

def register(name, klass = nil)
  klass ||= proc do
    cname = helper.get(:inflector).classify(name.to_s)

    require_relative "hooks/#{name}"

    helper.get(:inflector).constantize("#{self.name}::#{cname}")
  end.call

  @registered_hooks ||= {}
  @registered_hooks[name] = klass
  self
end

Instance Method Details

#[](key) ⇒ nil|Array<Hook>

Parameters:

  • key (Symbol)

Returns:

  • (nil|Array<Hook>)


64
65
66
# File 'lib/kamaze/project/tools/git/hooks.rb', line 64

def [](key)
  to_h[key]
end

#to_hHash

Returns:

  • (Hash)


58
59
60
# File 'lib/kamaze/project/tools/git/hooks.rb', line 58

def to_h
  @hooks.freeze
end