namespace :trac do
task :include_dependencies => [] do
require 'mechanize'
require 'logger'
$KCODE = 'u'
require 'jcode'
require 'active_support'
require 'active_support/multibyte'
end
desc 'Imports tickets to Trac'
task :import => [:include_dependencies] do
@user = ENV['user']
@pass = ENV['pass']
@url = ENV['url']
@file = ENV['file']
@owner = ENV['owner']
@tickets = File.read(@file).split("\n").map{|a|a.strip}.uniq.delete_if{|a| a.empty? }
agent = WWW::Mechanize.new
agent.basic_auth(@user, @pass)
p = agent.get(@url)
@tickets.each do |t|
page = agent.click p.links.text(/New Ticket/)
frm = page.forms[1]
flds = {
:field_summary => t.chars[0..50] + (t.length > 50 ? '...' : ''),
:field_description => t,
:field_owner => @owner
}
flds.each do |f, v|
frm.field(f.to_s).value = v
end
p = agent.submit(frm)
end
end
end