desc "Release the gem"
task :release => :install do |t|
begin
ac_path = File.join(ENV["HOME"], ".rubyforge", "auto-config.yml")
if File.exists?(ac_path)
fixed = File.open(ac_path).read.gsub(" ~: {}\n\n", '')
fixed.gsub!(/ !ruby\/object:Gem::Version \? \n.+\n.+\n\n/, '')
puts "Fixing #{ac_path}..."
File.open(ac_path, "w") {|f| f.puts fixed}
end
begin
rf = RubyForge.new
rf.configure
rf.login
rf.add_release(@gem_spec.rubyforge_project, @gem_spec.name, @gem_spec.version, File.join("pkg", "#{@gem_spec.name}-#{@gem_spec.version}.gem"))
rescue Exception => e
if e.message.match("Invalid package_id") || e.message.match("no <package_id> configured for")
puts "You need to create the package!"
rf.create_package(@gem_spec.rubyforge_project, @gem_spec.name)
rf.add_release(@gem_spec.rubyforge_project, @gem_spec.name, @gem_spec.version, File.join("pkg", "#{@gem_spec.name}-#{@gem_spec.version}.gem"))
else
raise e
end
end
rescue Exception => e
if e.message == "You have already released this version."
puts e
else
raise e
end
end
end