class Lolcommits::Installation

Methods to handle enabling and disabling of lolcommits

Public Class Methods

backend() click to toggle source
# File lib/lolcommits/installation.rb, line 8
def self.backend
  if GitInfo.repo_root?
    InstallationGit
  elsif MercurialInfo.repo_root?
    InstallationMercurial
  else
    fatal "You don't appear to be in the base directory of a supported vcs project."
    exit 1
  end
end
do_disable() click to toggle source

IF –DISABLE, DO DISABLE

# File lib/lolcommits/installation.rb, line 36
def self.do_disable
  backend.do_disable
end
do_enable(options = {}) click to toggle source

IF –ENABLE, DO ENABLE

# File lib/lolcommits/installation.rb, line 22
def self.do_enable(options = {})
  capture_args = extract_capture_args(options)
  path         = backend.do_enable(capture_args)

  info 'installed lolcommit hook to:'
  info "  -> #{File.expand_path(path)}"
  info '(to remove later, you can use: lolcommits --disable)'
  # we dont symlink, but rather install a small stub that calls the one from path
  # that way, as gem version changes, script updates even if new file thus breaking symlink
end
extract_capture_args(options) click to toggle source

Extract any command line capture args from the parsed options hash, will be appended to the capture command within the commit hook script

@return [String]

# File lib/lolcommits/installation.rb, line 44
def self.extract_capture_args(options)
  options.map do |k, v|
    next unless %w(device animate delay stealth fork).include?(k)

    if k == 'device'
      "--device '#{v}'"
    else
      "--#{k}#{v == true ? '' : " #{v}"}"
    end
  end.compact.join(' ')
end