Tag unstable CGI specs.
[rbx.git] / rakelib / release.rake
blob2dd9d59a9aaf7a81a30d2031173ec95651697816
1 # -*- ruby -*-
3 ##
4 # Release Steps:
6 # 1) rake git:pull spec and make sure everything is clean.
7 # 2) if needed, update the version in rakelib/configuration.rb
8 #    commit, and rake git:safe_push.
9 # 3) rake release VERSION="X.Y.Z"
10 #    1) It packages up a tarball from HEAD on your master in cwd.
11 #    2) It tags HEAD on master with "vX.Y.Z", but is not pushed up.
12 # 4) double check the tarball - send out to osx, linux, and bsd for testing.
13 # 5) rake git:push
14 # 6) profit?
17 require 'rakelib/configuration'
19 desc "Perform a release"
20 task :release => %w(release:package release:tag)
22 desc "release tasks"
23 namespace :release do
25   # TODO auto-commit CONTRIBUTORS file
26   desc  "Generate CONTRIBUTORS file"
27   task :contributors do
28     sh "git log | grep Author | sort --unique | sed -e 's/Author: //' > CONTRIBUTORS"
29   end
31   desc "Print release steps"
32   task :help do
33     help = File.read(__FILE__).split(/\n\n+/)[1]
35     puts help.gsub(/^\#+ ?/, '')
36     puts
37   end
39   desc "Build a package from the git repo"
40   task :package do
41     ver = ENV['VERSION']
42     abort "you need to specify VERSION=x.y.z" unless ver
43     verify_version ver
45     name = "rubinius-#{ver}"
47     on_master do
48       sh "git archive --format=tar --prefix=#{name}/ HEAD | gzip -9>#{name}.tgz"
49     end
50   end
52   desc "Build a package from the git repo"
53   task :tag do
54     ver = ENV['VERSION']
55     abort "you need to specify VERSION=x.y.z" unless ver
56     verify_version ver
58     name = "v#{ver}"
60     on_master do
61       # TODO: we _may_ want to switch from -a to -s for signed tarballs... maybe
62       sh "git tag -a -m 'Tagging #{name} for release' #{name}"
63       sh "git tag -l #{name}"
64     end
65   end
66 end
68 def verify_version expected
69   actual = RBX_VERSION
70   unless expected == actual
71     abort "version #{expected} doesn't match #{actual}. Run `rake release:help`"
72   end
73 end