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