class Bugzilla::Plugin::RedHat
Public Class Methods
new()
click to toggle source
Calls superclass method
Bugzilla::Plugin::Template::new
# File lib/bugzilla/plugins/rhbugzilla.rb, line 31 def initialize super @hostname = 'bugzilla.redhat.com' end
Public Instance Methods
parserhook(*args)
click to toggle source
# File lib/bugzilla/plugins/rhbugzilla.rb, line 37 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/bugzilla/plugins/rhbugzilla.rb, line 159 def posthook(*args) cmd, opts, *etc = args case cmd when :search if opts.include?('bugs') opts['bugs'].each do |bug| if bug.include?('bug_status') bug['status'] = bug['bug_status'] bug.delete('bug_status') end if bug.include?('bug_id') bug['id'] = bug['bug_id'] bug.delete('bug_id') end if bug.include?('bug_severity') bug['severity'] = bug['bug_severity'] bug.delete('bug_severity') end if bug.include?('short_desc') bug['summary'] = bug['short_desc'] bug.delete('short_desc') end end end when :metrics metricsopts = etc[0] if opts.include?('bugs') opts['bugs'].each do |bug| if bug.include?('bug_status') bug['status'] = bug['bug_status'] bug.delete('bug_status') end if bug.include?('bug_id') bug['id'] = bug['bug_id'] bug.delete('bug_id') end if bug.include?('bug_severity') bug['severity'] = bug['bug_severity'] bug.delete('bug_severity') end if bug.include?('short_desc') bug['summary'] = bug['short_desc'] bug.delete('short_desc') end end end end end
prehook(*args)
click to toggle source
# File lib/bugzilla/plugins/rhbugzilla.rb, line 45 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) opts[:bug_status] = opts[:status] opts.delete(:status) end if opts.include?(:id) opts[:bug_id] = opts[:id] opts.delete(:id) end opts[:bug_severity] = opts[:severity] if opts.include?(:severity) if opts.include?(:summary) opts[:short_desc] = opts[:summary] opts.delete(:summary) end if opts.include?(:cc) # 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) opts[format('field0-%d-0', extra_field)] = :creation_ts opts[format('type0-%d-0', extra_field)] = :greaterthan opts[format('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) opts[:bug_status] = opts[:status] opts.delete(:status) end if opts.include?(:id) opts[:bug_id] = opts[:id] opts.delete(:id) end opts[:bug_severity] = opts[:severity] if opts.include?(:severity) if opts.include?(:summary) opts[:short_desc] = opts[:summary] opts.delete(:summary) end if opts.include?(:cc) 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) if opts[:creation_time].is_a?(Array) opts[format('field0-%d-0', extra_field)] = :creation_ts opts[format('type0-%d-0', extra_field)] = :greaterthan opts[format('value0-%d-0', extra_field)] = opts[:creation_time][0] extra_field += 1 opts[format('field0-%d-0', extra_field)] = :creation_ts opts[format('type0-%d-0', extra_field)] = :lessthan opts[format('value0-%d-0', extra_field)] = opts[:creation_time][1] extra_field += 1 else opts[format('field0-%d-0', extra_field)] = :creation_ts opts[format('type0-%d-0', extra_field)] = :greaterthan opts[format('value0-%d-0', extra_field)] = opts[:creation_time] extra_field += 1 end opts.delete(:creation_time) end if opts.include?(:last_change_time) if opts[:last_change_time].is_a?(Array) opts[:chfieldfrom] = opts[:last_change_time][0] opts[:chfieldto] = opts[:last_change_time][1] if opts[:bug_status] == 'CLOSED' opts[format('field0-%d-0', extra_field)] = :bug_status opts[format('type0-%d-0', extra_field)] = :changedto opts[format('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) opts[format('field0-%d-0', extra_field)] = :bug_status opts[format('type0-%d-0', extra_field)] = :changedafter opts[format('value0-%d-0', extra_field)] = opts[:metrics_closed_after] extra_field += 1 opts.delete(:metrics_closed_after) end if opts.include?(:metrics_not_closed) opts[format('field0-%d-0', extra_field)] = :bug_status opts[format('type0-%d-0', extra_field)] = :notequals opts[format('value0-%d-0', extra_field)] = 'CLOSED' extra_field += 1 opts[format('field0-%d-0', extra_field)] = :creation_ts opts[format('type0-%d-0', extra_field)] = :lessthan opts[format('value0-%d-0', extra_field)] = opts[:metrics_not_closed] extra_field += 1 opts.delete(:metrics_not_closed) end end end