Class: Lolcommits::Installation

Inherits:
Object
  • Object
show all
Defined in:
lib/lolcommits/installation.rb

Overview

Methods to handle enabling and disabling of lolcommits

Class Method Summary collapse

Class Method Details

.backendObject



6
7
8
9
10
11
12
13
14
15
# File 'lib/lolcommits/installation.rb', line 6

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_disableObject

IF –DISABLE, DO DISABLE



34
35
36
# File 'lib/lolcommits/installation.rb', line 34

def self.do_disable
  backend.do_disable
end

.do_enable(options = {}) ⇒ Object

IF –ENABLE, DO ENABLE



20
21
22
23
24
25
26
27
28
29
# File 'lib/lolcommits/installation.rb', line 20

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) ⇒ String

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

Returns:

  • (String)


42
43
44
45
46
47
48
49
50
51
52
# File 'lib/lolcommits/installation.rb', line 42

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