11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/ghrh/command/edit.rb', line 11
def execute
raise "No repo specified (-r) or set (github.repo)" if not repo
hooks = GHRH::Config.hooks
res = GHRH::Client.get("/repos/#{repo}/hooks/#{id}")
raise "Invalid hook ID #{id}" if not res['name']
name = res['name']
hook = hooks[name]
schema = {}
hook['schema'].each do |s|
format, name = s
schema[name] = format
end
supported_events = hook['supported_events']
config = {}
config_list.each do |arg|
k,v = arg.split(/=/,2)
raise "Invalid setting #{k} for hook #{id} (#{name})" if not schema.include? k
config[k]=v
end
events_list = []
if events
events_list = events.split(/,/)
events_list.each do |event|
raise "Invalid event #{event} for hook #{id} (#{name})" if not supported_events.include? event
end
end
hook_input = {}
hook_input['events'] = events_list if not events_list.empty?
hook_input['config'] = config if not config.empty?
hook_input['active'] = !no_active?
resp = GHRH::Client.patch("/repos/#{repo}/hooks/#{id}", { :body => hook_input.to_json })
puts "#{resp.code} #{resp.message}"
pp "#{resp.body}" if $DEBUG
end
|