Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

80 lines (67 sloc) 2.577 kB
begin
require 'rubyforge'
rescue LoadError
warn "rubyforge gem is required to generate announces, please install it (gem install rubyforge)."
end
CLEAN.include('email.txt')
if defined?(RubyForge) then
if defined?(GEM_SPEC) then
desc 'Create news email file and post to RubyForge.'
task :announce do |t|
ver = ENV['VERSION'] or fail "Must supply VERSION (rake announce VERSION=x.y.z)."
# compare versions to avoid mistakes
unless ver == GEM_SPEC.version.to_s then
fail "Version mismatch (supplied and specification versions differ)."
end
# no homepage? why announce it then?!
if GEM_SPEC.homepage == 'TODO' or GEM_SPEC.homepage.nil? then
fail "Must define homepage in your gem specification."
end
# no rubyforge project? no release for you!
if GEM_SPEC.rubyforge_project == 'TODO' or GEM_SPEC.rubyforge_project.nil? then
fail "Must define rubyforge_project in your gem specification."
end
# instantiate a RubyForge object
rf = RubyForge.new.configure
# read project info and overview
notes = begin
r = File.read("README.rdoc")
r.split(/^(=+ .*)/)[1..4].join.strip
rescue
warn "Missing README.rdoc"
''
end
# read changes
changes = begin
h = File.read("History.txt")
h.split(/^(===+ .*)/)[1..2].join.strip
rescue
warn "Missing History.txt"
''
end
# standard fields
subject = "#{GEM_SPEC.name} #{GEM_SPEC.version} Released"
title = "#{GEM_SPEC.name} version #{GEM_SPEC.version} has been released!"
body = "#{notes}\n\nChanges:\n\n#{changes}"
urls = [GEM_SPEC.homepage, "http://rubyforge.org/projects/#{GEM_SPEC.rubyforge_project}"].map { |u| "* <#{u.strip}>" }.join("\n")
puts "Logging in RubyForge..."
rf.login
puts "Generating email.txt..."
File.open("email.txt", "w") do |mail|
mail.puts "Subject: [ANN] #{subject}"
mail.puts
mail.puts title
mail.puts
mail.puts urls
mail.puts
mail.puts body
end
puts "Created email.txt"
puts "Posting news for #{GEM_SPEC.name} version #{GEM_SPEC.version}..."
rf.post_news GEM_SPEC.rubyforge_project, subject, "#{title}\n\n#{body}"
puts "Done."
end
else
warn "no GEM_SPEC is found or defined. 'announce' task cannot work without it."
end
end
Jump to Line
Something went wrong with that request. Please try again.