1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
namespace :release do
task :prepare => [:reversion, :authors, :gemspec]
task :all => ['release:github', 'release:rubyforge', 'release:gemcutter']
desc 'Release on github'
task :github => :prepare do
name, version = GEMSPEC.name, GEMSPEC.version
sh('git', 'add',
'MANIFEST', 'CHANGELOG', 'AUTHORS',
"#{name}.gemspec",
"lib/#{name}/version.rb")
puts <<-INSTRUCTIONS
================================================================================
I added the relevant files, you can commit them, tag the commit, and push:
git commit -m 'Version #{version}'
git tag -a -m '#{version}' '#{version}'
git push
================================================================================
INSTRUCTIONS
end
desc 'Release on rubyforge'
task :rubyforge => ['release:prepare', :package] do
name, version = GEMSPEC.name, GEMSPEC.version
pkgs = Dir["pkg/#{name}-#{version}.{tgz,zip}"].map{|file|
"rubyforge add_file #{name} #{name} '#{version}' '#{file}'"
}
puts <<-INSTRUCTIONS
================================================================================
To publish to rubyforge do following:
rubyforge login
rubyforge add_release #{name} #{name} '#{version}' pkg/#{name}-#{version}.gem
To publish the archives for distro packagers:
#{pkgs.join "\n"}
================================================================================
INSTRUCTIONS
end
desc 'Release on gemcutter'
task :gemcutter => ['release:prepare', :package] do
name, version = GEMSPEC.name, GEMSPEC.version
puts <<-INSTRUCTIONS
================================================================================
To publish to gemcutter do following:
gem push pkg/#{name}-#{version}.gem
================================================================================
INSTRUCTIONS
end
end
|