|
1 |
require 'ini'
|
|
2 |
|
|
3 |
module HgrcSupport
|
|
4 |
def self.included(base)
|
|
5 |
base.after_save :save_hgrc
|
|
6 |
end
|
|
7 |
|
|
8 |
attr_reader :hgrc_hooks_issues_update
|
|
9 |
attr_accessor :hgrc_web_contact
|
|
10 |
attr_accessor :hgrc_web_description
|
|
11 |
attr_accessor :hgrc_web_style
|
|
12 |
|
|
13 |
def hgrc_hooks_issues_update=(value)
|
|
14 |
if ['0', '1'].include? value.to_s
|
|
15 |
@hgrc_hooks_issues_update = value
|
|
16 |
elsif value == true
|
|
17 |
@hgrc_hooks_issues_update = 1
|
|
18 |
else
|
|
19 |
@hgrc_hooks_issues_update = 0
|
|
20 |
end
|
|
21 |
end
|
|
22 |
|
|
23 |
def load_hgrc
|
|
24 |
ini = Ini.new(File.join(url, '.hg', 'hgrc'))
|
|
25 |
#web
|
|
26 |
ini['web'] = {} if ini['web'].nil?
|
|
27 |
@hgrc_web_contact = ini['web']['contact']
|
|
28 |
@hgrc_web_description = ini['web']['description']
|
|
29 |
@hgrc_web_style = ini['web']['style']
|
|
30 |
#hooks
|
|
31 |
ini['hooks'] = {} if ini['hooks'].nil?
|
|
32 |
if !ini['hooks']['changegroup.redmine'].nil? && !ini['hooks']['changegroup.redmine'].empty?
|
|
33 |
@hgrc_hooks_issues_update = 1
|
|
34 |
else
|
|
35 |
@hgrc_hooks_issues_update = 0
|
|
36 |
end
|
|
37 |
end
|
|
38 |
|
|
39 |
private
|
|
40 |
def save_hgrc
|
|
41 |
ini = Ini.new(File.join(url, '.hg', 'hgrc'))
|
|
42 |
#web
|
|
43 |
ini['web'] = {} if ini['web'].nil?
|
|
44 |
ini['web']['contact'] = @hgrc_web_contact
|
|
45 |
ini['web']['description'] = @hgrc_web_description
|
|
46 |
ini['web']['style'] = @hgrc_web_style
|
|
47 |
#hooks
|
|
48 |
ini['hooks'] = {} if ini['hooks'].nil?
|
|
49 |
if @hgrc_hooks_issues_update.to_i == 1
|
|
50 |
ini['hooks']['changegroup.redmine'] = "cd #{RAILS_ROOT} && ruby script/runner \"Repository.find(#{self[:id]}).fetch_changesets\" -e #{RAILS_ENV}"
|
|
51 |
elsif !ini['hooks']['changegroup.redmine'].nil? && !ini['hooks']['changegroup.redmine'].empty?
|
|
52 |
ini['hooks'].delete('changegroup.redmine')
|
|
53 |
end
|
|
54 |
ini.comment = "Generated with Redmine.\n"
|
|
55 |
#save
|
|
56 |
ini.update()
|
|
57 |
end
|
|
58 |
end
|