raindrops 0.8.1 - compatibility fixes
[raindrops.git] / Rakefile
blobb992f80b5218152b9b77f34cfbb4983ec2f74238
1 desc "read news article from STDIN and post to rubyforge"
2 task :publish_news do
3   require 'rubyforge'
4   spec = Gem::Specification.load('raindrops.gemspec')
5   tmp = Tempfile.new('rf-news')
6   _, subject, body = `git cat-file tag v#{spec.version}`.split(/\n\n/, 3)
7   tmp.puts subject
8   tmp.puts
9   tmp.puts spec.description.strip
10   tmp.puts ""
11   tmp.puts "* #{spec.homepage}"
12   tmp.puts "* #{spec.email}"
13   tmp.puts "* #{git_url}"
14   tmp.print "\nChanges:\n\n"
15   tmp.puts body
16   tmp.flush
17   system(ENV["VISUAL"], tmp.path) or abort "#{ENV["VISUAL"]} failed: #$?"
18   msg = File.readlines(tmp.path)
19   subject = msg.shift
20   blank = msg.shift
21   blank == "\n" or abort "no newline after subject!"
22   subject.strip!
23   body = msg.join("").strip!
25   rf = RubyForge.new.configure
26   rf.login
27   rf.post_news('rainbows', subject, body)
28 end
30 desc "post to RAA"
31 task :raa_update do
32   require 'net/http'
33   require 'net/netrc'
34   rc = Net::Netrc.locate('raindrops-raa') or abort "~/.netrc not found"
35   password = rc.password
37   s = Gem::Specification.load('raindrops.gemspec')
38   desc = [ s.description.strip ]
39   desc << ""
40   desc << "* #{s.email}"
41   desc << "* #{git_url}"
42   desc << "* #{cgit_url}"
43   desc = desc.join("\n")
44   uri = URI.parse('http://raa.ruby-lang.org/regist.rhtml')
45   form = {
46     :name => s.name,
47     :short_description => s.summary,
48     :version => s.version.to_s,
49     :status => 'experimental',
50     :owner => s.authors.first,
51     :email => s.email,
52     :category_major => 'Library',
53     :category_minor => 'Rack',
54     :url => s.homepage,
55     :download => 'http://rubyforge.org/frs/?group_id=8977',
56     :license => 'LGPL', # LGPLv3, actually, but RAA is ancient...
57     :description_style => 'Plain',
58     :description => desc,
59     :pass => password,
60     :submit => 'Update',
61   }
62   res = Net::HTTP.post_form(uri, form)
63   p res
64   puts res.body
65 end