diff options
author | Carl Lerche <me@carllerche.com> | 2010-11-16 16:03:57 -0800 |
---|---|---|
committer | Carl Lerche <me@carllerche.com> | 2010-11-16 17:19:47 -0800 |
commit | dab1d8dcc6030a5c1f5e88744d3c40d771be23a3 (patch) | |
tree | 48294673b4497a48dd76eba5508343a36f4f0f6d | |
parent | 6b3f521b806614a073e4418307b56241fe287940 (diff) | |
download | rails-dab1d8dcc6030a5c1f5e88744d3c40d771be23a3.tar.gz rails-dab1d8dcc6030a5c1f5e88744d3c40d771be23a3.tar.bz2 rails-dab1d8dcc6030a5c1f5e88744d3c40d771be23a3.zip |
Add some sanity checks to the gem push script
-rw-r--r-- | tasks/release.rb | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/tasks/release.rb b/tasks/release.rb index 4c038f51f5..8073965a50 100644 --- a/tasks/release.rb +++ b/tasks/release.rb @@ -2,6 +2,7 @@ FRAMEWORKS = %w( activesupport activemodel activerecord activeresource actionpac root = File.expand_path('../../', __FILE__) version = File.read("#{root}/RAILS_VERSION").strip +tag = "v#{version}" directory "dist" @@ -52,15 +53,28 @@ directory "dist" sh "gem install #{gem}" end + task :prep_release => [:ensure_clean_state, :build] + task :push => :build do sh "gem push #{gem}" end end end -namespace :git do +namespace :release do + task :ensure_clean_state do + unless `git status -s | grep -v RAILS_VERSION`.strip.empty? + abort "[ABORTING] `git status` reports a dirty tree. Make sure all changes are committed" + end + + unless ENV['SKIP_TAG'] || `git tag | grep #{tag}`.strip.empty? + abort "[ABORTING] `git tag` shows that #{tag} already exists. Has this version already\n"\ + " been released? Git tagging can be skipped by setting SKIP_TAG=1" + end + end + task :tag do - sh "git tag v#{version}" + sh "git tag #{tag}" end end |