require 'rubygems' require 'rake/gempackagetask' require 'rake/contrib/rubyforgepublisher' spec = eval(File.read(File.join(File.dirname(__FILE__), 'merb_openid.gemspec'))) Rake::GemPackageTask.new(spec) do |pkg| pkg.gem_spec = spec pkg.need_zip = true pkg.need_tar = true end task :install => [:package] do sh %{sudo gem install pkg/#{spec.name}-#{spec.version} --no-update-sources} end task :verify_user do raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER'] end desc "Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file" task :publish_packages => [:verify_user, :package] do package_name = [spec.name, spec.version].join '-' release_files = FileList[ "pkg/#{package_name}.gem", "pkg/#{package_name}.tgz", "pkg/#{package_name}.zip" ] unless spec.version =~ /RC[0-9]$/ require 'meta_project' require 'rake/contrib/xforge' Rake::XForge::Release.new(MetaProject::Project::XForge::RubyForge.new('merbopenid')) do |xf| # Never hardcode user name and password in the Rakefile! xf.user_name = ENV['RUBYFORGE_USER'] xf.files = release_files.to_a xf.release_name = "Merb OpenID #{spec.version}" xf.release_notes = '' xf.release_changes = '' end else puts "SINCE THIS IS A PRERELEASE, FILES ARE UPLOADED WITH SSH, NOT TO THE RUBYFORGE FILE SECTION" puts "YOU MUST TYPE THE PASSWORD #{release_files.length} TIMES..." host = "merbopenid-website@rubyforge.org" remote_dir = "/var/www/gforge-projects/merbopenid" publisher = Rake::SshFilePublisher.new( host, remote_dir, File.dirname(__FILE__), *release_files ) publisher.upload puts "UPLOADED THE FOLLOWING FILES:" release_files.each do |file| name = file.match(/pkg\/(.*)/)[1] puts "* http://merbopenid.rubyforge.org/#{name}" end puts "They are not linked to anywhere, so don't forget to tell people!" end end namespace :jruby do desc "Run :package and install the resulting .gem with jruby" task :install => :package do sh %{#{SUDO} jruby -S gem install pkg/#{spec.name}-#{Merb::VERSION}.gem --no-rdoc --no-ri} end end