def prehook(*args)
cmd, opts, *etc = args
case cmd
when :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
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
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