class Bugzilla::Plugin::RedHat
Public Class Methods
new()
click to toggle source
Calls superclass method
Bugzilla::Plugin::Template::new
# File lib/ruby-bugzilla/rhbugzilla.rb, line 34 def initialize super @hostname = "bugzilla.redhat.com" end
Public Instance Methods
parserhook(*args)
click to toggle source
# File lib/ruby-bugzilla/rhbugzilla.rb, line 40 def parserhook(*args) parser, argv, opts, *etc = args parser.separator "" parser.separator "RH Bugzilla specific options:" parser.on('--cc=EMAILS', 'filter out the result by Cc in bugs') {|v| opts[:query][:cc] ||= []; opts[:query][:cc].push(*v.split(','))} parser.on('--filterversion=VERSION', 'filter out the result by the version in bugs') {|v| opts[:query][:version] ||= []; opts[:query][:version].push(*v.split(','))} end
posthook(*args)
click to toggle source
# File lib/ruby-bugzilla/rhbugzilla.rb, line 167 def posthook(*args) cmd, opts, *etc = args case cmd when :search if opts.include?('bugs') then opts['bugs'].each do |bug| if bug.include?('bug_status') then bug['status'] = bug['bug_status'] bug.delete('bug_status') end if bug.include?('bug_id') then bug['id'] = bug['bug_id'] bug.delete('bug_id') end if bug.include?('bug_severity') then bug['severity'] = bug['bug_severity'] bug.delete('bug_severity') end if bug.include?('short_desc') then bug['summary'] = bug['short_desc'] bug.delete('short_desc') end end end when :metrics metricsopts = etc[0] if opts.include?('bugs') then opts['bugs'].each do |bug| if bug.include?('bug_status') then bug['status'] = bug['bug_status'] bug.delete('bug_status') end if bug.include?('bug_id') then bug['id'] = bug['bug_id'] bug.delete('bug_id') end if bug.include?('bug_severity') then bug['severity'] = bug['bug_severity'] bug.delete('bug_severity') end if bug.include?('short_desc') then bug['summary'] = bug['short_desc'] bug.delete('short_desc') end end end else end end
prehook(*args)
click to toggle source
# File lib/ruby-bugzilla/rhbugzilla.rb, line 48 def prehook(*args) cmd, opts, *etc = args case cmd when :search # This parameter is Red Hat Extension # See https://bugzilla.redhat.com/docs/en/html/api/Bugzilla/WebService/Bug.html#search opts[:query_format] = 'advanced' extra_field = 0 if opts.include?(:status) then opts[:bug_status] = opts[:status] opts.delete(:status) end if opts.include?(:id) then opts[:bug_id] = opts[:id] opts.delete(:id) end if opts.include?(:severity) opts[:bug_severity] = opts[:severity] end if opts.include?(:summary) then opts[:short_desc] = opts[:summary] opts.delete(:summary) end if opts.include?(:cc) then # CC should be parsed "any words" by default opts[eval(":emailcc1")] = 1 opts[eval(":emailtype1")] = :anywordssubstr opts[eval(":email1")] = opts[:cc] opts.delete(:cc) end if opts.include?(:creation_time) then opts[sprintf("field0-%d-0", extra_field)] = :creation_ts opts[sprintf("type0-%d-0", extra_field)] = :greaterthan opts[sprintf("value0-%d-0", extra_field)] = opts[:creation_time] opts.delete(:creation_time) end when :metrics metricsopts = etc[0] extra_field = 0 if opts.include?(:status) then opts[:bug_status] = opts[:status] opts.delete(:status) end if opts.include?(:id) then opts[:bug_id] = opts[:id] opts.delete(:id) end if opts.include?(:severity) opts[:bug_severity] = opts[:severity] end if opts.include?(:summary) then opts[:short_desc] = opts[:summary] opts.delete(:summary) end if opts.include?(:cc) then i = 1 opts[:cc].each do |e| opts[eval(":emailcc#{i}")] = 1 opts[eval(":emailtype#{i}")] = :substring opts[eval(":email#{i}")] = e end opts.delete(:cc) end if opts.include?(:creation_time) then if opts[:creation_time].kind_of?(Array) then opts[sprintf("field0-%d-0", extra_field)] = :creation_ts opts[sprintf("type0-%d-0", extra_field)] = :greaterthan opts[sprintf("value0-%d-0", extra_field)] = opts[:creation_time][0] extra_field += 1 opts[sprintf("field0-%d-0", extra_field)] = :creation_ts opts[sprintf("type0-%d-0", extra_field)] = :lessthan opts[sprintf("value0-%d-0", extra_field)] = opts[:creation_time][1] extra_field += 1 else opts[sprintf("field0-%d-0", extra_field)] = :creation_ts opts[sprintf("type0-%d-0", extra_field)] = :greaterthan opts[sprintf("value0-%d-0", extra_field)] = opts[:creation_time] extra_field += 1 end opts.delete(:creation_time) end if opts.include?(:last_change_time) then if opts[:last_change_time].kind_of?(Array) then opts[:chfieldfrom] = opts[:last_change_time][0] opts[:chfieldto] = opts[:last_change_time][1] if opts[:bug_status] == 'CLOSED' then opts[sprintf("field0-%d-0", extra_field)] = :bug_status opts[sprintf("type0-%d-0", extra_field)] = :changedto opts[sprintf("value0-%d-0", extra_field)] = opts[:bug_status] extra_field += 1 end end opts.delete(:last_change_time) end if opts.include?(:metrics_closed_after) then opts[sprintf("field0-%d-0", extra_field)] = :bug_status opts[sprintf("type0-%d-0", extra_field)] = :changedafter opts[sprintf("value0-%d-0", extra_field)] = opts[:metrics_closed_after] extra_field += 1 opts.delete(:metrics_closed_after) end if opts.include?(:metrics_not_closed) then opts[sprintf("field0-%d-0", extra_field)] = :bug_status opts[sprintf("type0-%d-0", extra_field)] = :notequals opts[sprintf("value0-%d-0", extra_field)] = 'CLOSED' extra_field += 1 opts[sprintf("field0-%d-0", extra_field)] = :creation_ts opts[sprintf("type0-%d-0", extra_field)] = :lessthan opts[sprintf("value0-%d-0", extra_field)] = opts[:metrics_not_closed] extra_field += 1 opts.delete(:metrics_not_closed) end else end end