class GHRH::Command::Edit
Public Instance Methods
execute()
click to toggle source
# 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] # hook schema, build a hash for easy lookup name -> format schema = {} hook['schema'].each do |s| format, name = s schema[name] = format end supported_events = hook['supported_events'] # hook config that will be sent config = {} # make sure config settings given exist in the schema 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 # make sure events given are in supported events 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