module Hoe::Package
def define_package_tasks
def define_package_tasks prerelease_version Gem::PackageTask.new spec do |pkg| pkg.need_tar = @need_tar pkg.need_zip = @need_zip end task(:gem).prerequisites.prepend :clean desc "Install the package as a gem. (opt. NOSUDO=1)" task :install_gem => [:clean, :package, :check_extra_deps] do install_gem Dir["pkg/*.gem"].first end desc "Package and upload; Requires VERSION=x.y.z (optional PRE=a.1)" task :release => [:prerelease, :release_to, :postrelease] # no doco, invisible hook task :prerelease do abort "Fix your version before you release" if spec.version.to_s =~ /borked/ end # no doco, invisible hook task :release_to # no doco, invisible hook task :postrelease desc "Sanity checks for release" task :release_sanity do v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z" pre = ENV["PRERELEASE"] || ENV["PRE"] v += ".#{pre}" if pre c = changes[/\d\S+/] abort "Versions don't match: %s vs %s" % [v, version] if v != version abort "Versions don't match %s: %s vs %s" % [history_file, v, c] if v != c end end