class PreCommit::Installer

Constants

TARGET_GIT_PATH
TARGET_HOOKS_PATH
TEMPLATE_DIR

Attributes

key[R]

Public Class Methods

new(key = nil) click to toggle source
# File lib/pre-commit/installer.rb, line 13
def initialize(key = nil)
  @key = key || "automatic"
end

Public Instance Methods

hook() click to toggle source
# File lib/pre-commit/installer.rb, line 17
def hook
  templates[key.sub(/^--/, "")]
end
install() click to toggle source
# File lib/pre-commit/installer.rb, line 30
def install
  if
    hook
  then
    FileUtils.mkdir_p(File.dirname(target))
    FileUtils.cp(hook, target)
    FileUtils.chmod(0755, target)
    puts "Installed #{hook} to #{target}"
    true
  else
    warn "Could not find template #{key}"
    false
  end
end
target() click to toggle source
# File lib/pre-commit/installer.rb, line 21
def target
  target_git_path =
  if   File.directory?(TARGET_GIT_PATH)
  then TARGET_GIT_PATH
  else File.readlines('.git').first.match(/gitdir: (.*)$/)[1]
  end
  File.join(target_git_path, TARGET_HOOKS_PATH)
end
templates() click to toggle source
# File lib/pre-commit/installer.rb, line 45
def templates
  @templates ||= begin
    pattern = File.join(TEMPLATE_DIR, "*")

    Dir.glob(pattern).inject({}) do |hash, file|
      key = file.match(/\/([^\/]+?)$/)[1]
      hash[key] = file
      hash
    end
  end
end