tasks/release.rake in makura-2009.05.27 vs tasks/release.rake in makura-2010.08
- old
+ new
@@ -1,69 +1,65 @@
namespace :release do
- task :all => [:release_github, :release_rubyforge]
+ task :prepare => %w[reversion authors gemspec]
+ task :all => %w[release:github release:rubyforge release:gemcutter]
- desc 'Display instructions to release on github'
- task :github => [:reversion, :gemspec] do
+ desc 'Release on github'
+ task :github => :prepare do
name, version = GEMSPEC.name, GEMSPEC.version
- puts <<INSTRUCTIONS
-First add the relevant files:
+ sh('git', 'add',
+ 'MANIFEST', 'doc/CHANGELOG', 'doc/AUTHORS',
+ "#{name}.gemspec",
+ "lib/#{name}/version.rb")
-git add MANIFEST CHANGELOG #{name}.gemspec lib/#{name}/version.rb
+ puts <<-INSTRUCTIONS
+================================================================================
-Then commit them, tag the commit, and push:
+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
-
+================================================================================
+ INSTRUCTIONS
end
- # TODO: Not tested
- desc 'Display instructions to release on rubyforge'
- task :rubyforge => [:reversion, :gemspec, :package] do
+ desc 'Release on rubyforge'
+ task :rubyforge => ['release:prepare', :package] do
name, version = GEMSPEC.name, GEMSPEC.version
- puts <<INSTRUCTIONS
+ 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
+rubyforge add_release #{name} #{name} '#{version}' pkg/#{name}-#{version}.gem
-After you have done these steps, see:
+To publish the archives for distro packagers:
-rake release:rubyforge_archives
+#{pkgs.join "\n"}
-INSTRUCTIONS
+================================================================================
+ INSTRUCTIONS
end
- desc 'Display instructions to add archives after release:rubyforge'
- task :rubyforge_archives do
- release_id = latest_release_id
+ desc 'Release on gemcutter'
+ task :gemcutter => ['release:prepare', :package] do
+ name, version = GEMSPEC.name, GEMSPEC.version
- puts "Adding archives for distro packagers is:", ""
+ puts <<-INSTRUCTIONS
+================================================================================
- Dir["pkg/#{name}-#{version}.{gz,zip}"].each do |file|
- puts "rubyforge add_file #{name} #{name} #{release_id} '#{file}'"
- end
+To publish to gemcutter do following:
- puts
- end
-end
+gem push pkg/#{name}-#{version}.gem
-# Use URI and proper XPATH, something along these lines:
-#
-# a = doc.at('a[@href=~"release_id"]')[:href]
-# release_id = URI(a).query[/release_id=(\w+)/, 1]
-def latest_release_id
- require 'open-uri'
- require 'hpricot'
-
- url = "http://rubyforge.org/frs/?group_id=#{PROJECT_RUBYFORGE_GROUP_ID}"
- doc = Hpricot(open(url))
- a = (doc/:a).find{|a| a[:href] =~ /release_id/}
-
- version = a.inner_html
- release_id = Hash[*a[:href].split('?').last.split('=').flatten]['release_id']
+================================================================================
+ INSTRUCTIONS
+ end
end