Module: GitHooks

Defined in:
lib/git-hooks.rb,
lib/git_hooks/cli.rb,
lib/git_hooks/git.rb,
lib/git_hooks/version.rb,
lib/git_hooks/pre_commit.rb,
lib/git_hooks/config_file.rb,
lib/git_hooks/configurations.rb,
lib/git_hooks/rspec_executor.rb,
lib/git_hooks/pre_commit/rspec.rb,
lib/git_hooks/rubocop_validator.rb,
lib/git_hooks/pre_commit/rubocop.rb,
lib/git_hooks/exceptions/missing_hooks.rb,
lib/git_hooks/pre_commit/prevent_master.rb

Defined Under Namespace

Modules: Exceptions, PreCommit Classes: CLI, ConfigFile, Configurations, Git, RspecExecutor, RubocopValidator

Constant Summary collapse

HOOK_SAMPLE_FILE =
'hook.sample'
HOOKS =
[PRE_COMMIT = 'pre-commit']
VERSION =
'0.1.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationsObject



28
29
30
# File 'lib/git-hooks.rb', line 28

def configurations
  @configurations ||= Configurations.new
end

Class Method Details

.base_pathObject



32
33
34
# File 'lib/git-hooks.rb', line 32

def base_path
  File.absolute_path(File.join(File.expand_path(__FILE__), '..', '..'))
end

.execute_pre_commitsObject



22
23
24
25
26
# File 'lib/git-hooks.rb', line 22

def execute_pre_commits
  configurations.pre_commits.each do |pre_commit|
    GitHooks::PreCommit.const_get(pre_commit).validate
  end
end

.hook_installed?(hook) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
39
40
41
42
# File 'lib/git-hooks.rb', line 36

def hook_installed?(hook)
  hook_file = File.join(Dir.pwd, '.git', 'hooks', hook)
  real_hook_file = File.join(base_path, HOOK_SAMPLE_FILE)

  return false unless File.symlink?(hook_file)
  File.realpath(hook_file) == real_hook_file
end

.install_hook(hook) ⇒ Object



44
45
46
# File 'lib/git-hooks.rb', line 44

def install_hook(hook)
  File.symlink(real_hook_template_path, ".git/hooks/#{hook}")
end

.validate_hooks!Object



48
49
50
# File 'lib/git-hooks.rb', line 48

def validate_hooks!
  fail Exceptions::MissingHook, PRE_COMMIT unless valid_pre_commit_hook?
end