Class: Lolcommits::InstallationMercurial

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

Overview

Methods to handle enabling and disabling of lolcommits

Constant Summary collapse

HOOK_SECTION =
'hooks'.freeze
HOOK_OPERATIONS =
%w(commit record crecord).freeze

Class Method Summary collapse

Class Method Details

.do_disableObject

IF –DISABLE, DO DISABLE



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/lolcommits/backends/installation_mercurial.rb', line 34

def self.do_disable
  config = repository.config
  if lolcommits_hook_exists?
    remove_existing_hook!
    info "uninstalled lolcommits hook (from #{config.path})"
  elsif config.exists?
    info "couldn't find an lolcommits hook (at #{config.path})"
  else
    info "no post commit hook found (at #{config.path}), so there is nothing to uninstall"
  end
end

.do_enableObject

IF –ENABLE, DO ENABLE



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/lolcommits/backends/installation_mercurial.rb', line 13

def self.do_enable
  unless File.directory?('.hg')
    fatal "You don't appear to be in the base directory of a mercurial project."
    exit 1
  end

  if lolcommits_hook_exists?
    # clear away any existing lolcommits hook
    remove_existing_hook!
  end

  config = repository.config
  HOOK_OPERATIONS.each do |op|
    config.add_setting(HOOK_SECTION, "post-#{op}.lolcommits", hook_script)
  end
  config.path
end

.hook_scriptObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/lolcommits/backends/installation_mercurial.rb', line 46

def self.hook_script
  ruby_path     = Lolcommits::Platform.command_which('ruby', true)
  imagick_path  = Lolcommits::Platform.command_which('identify', true)
  capture_cmd   = 'lolcommits --capture'

  if Lolcommits::Platform.platform_windows?
    capture_cmd = "set path=#{ruby_path};#{imagick_path};%PATH%&&#{capture_cmd}"
  else
    locale_export = "LANG=\"#{ENV['LANG']}\""
    hook_export   = "PATH=\"#{ruby_path}:#{imagick_path}:$PATH\""
    capture_cmd = "#{locale_export} #{hook_export} #{capture_cmd}"
  end

  capture_args = ARGV[1..-1].join(' ') if ARGV.length > 1
  "#{capture_cmd} #{capture_args}"
end

.lolcommits_hook_exists?Boolean

does a mercurial hook exist with lolcommits commands?

Returns:

  • (Boolean)


68
69
70
71
# File 'lib/lolcommits/backends/installation_mercurial.rb', line 68

def self.lolcommits_hook_exists?
  config = repository.config
  config.exists? && config.setting_exists?(HOOK_SECTION, 'post-commit.lolcommits')
end

.remove_existing_hook!Object



78
79
80
81
82
83
84
85
86
# File 'lib/lolcommits/backends/installation_mercurial.rb', line 78

def self.remove_existing_hook!
  config = repository.config
  HOOK_OPERATIONS.each do |op|
    setting = "post-#{op}.lolcommits"
    if config.setting_exists?(HOOK_SECTION, setting)
      config.delete_setting!(HOOK_SECTION, setting)
    end
  end
end

.repositoryObject



63
64
65
# File 'lib/lolcommits/backends/installation_mercurial.rb', line 63

def self.repository
  Mercurial::Repository.open('.')
end

.valid_hgrc?Boolean

can we load the hgrc?

Returns:

  • (Boolean)


74
75
76
# File 'lib/lolcommits/backends/installation_mercurial.rb', line 74

def self.valid_hgrc?
  repository.config.exists?
end