Class: Lolcommits::InstallationMercurial
- Inherits:
-
Object
- Object
- Lolcommits::InstallationMercurial
- 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
-
.do_disable ⇒ Object
IF –DISABLE, DO DISABLE.
-
.do_enable ⇒ Object
IF –ENABLE, DO ENABLE.
- .hook_script ⇒ Object
-
.lolcommits_hook_exists? ⇒ Boolean
does a mercurial hook exist with lolcommits commands?.
- .remove_existing_hook! ⇒ Object
- .repository ⇒ Object
-
.valid_hgrc? ⇒ Boolean
can we load the hgrc?.
Class Method Details
.do_disable ⇒ Object
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_enable ⇒ Object
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_script ⇒ Object
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?
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 |
.repository ⇒ Object
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?
74 75 76 |
# File 'lib/lolcommits/backends/installation_mercurial.rb', line 74 def self.valid_hgrc? repository.config.exists? end |