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 66
|
##
# RubyForge plugin for hoe.
#
# Adds a release dependency that cleans, packages, performs sanity
# checks, and releases to RubyForge.
#
# === Tasks Provided:
#
# release_to_rubyforge:: Release to rubyforge when release task is run.
module Hoe::RubyForge
def initialize_rubyforge
require 'rubyforge'
dependency_target << ['rubyforge', ">= #{::RubyForge::VERSION}"]
end
def define_rubyforge_tasks # :nodoc:
# no doco, invisible hook
task :release_to => :release_to_rubyforge
desc 'Release to rubyforge.'
task :release_to_rubyforge => [:clean, :package, :release_sanity] do
rf = RubyForge.new.configure
puts "Logging in"
rf.login
c = rf.userconfig
c["release_notes"] = description if description
c["release_changes"] = changes if changes
c["preformatted"] = true
files = [(@need_tar ? Dir["pkg/*.tgz"] : nil),
(@need_zip ? Dir["pkg/*.zip"] : nil),
Dir["pkg/*.gem"]].flatten.compact
puts "Releasing #{name} v. #{version}"
rf.add_release rubyforge_name, name, version, *files
end
if Hoe.plugins.include? :publish then
path = File.expand_path("~/.rubyforge/user-config.yml")
config = YAML.load(File.read(path)) rescue nil
if config then
base = "/var/www/gforge-projects"
dir = "#{base}/#{rubyforge_name}/#{remote_rdoc_dir}"
rdoc_locations << "#{config["username"]}@rubyforge.org:#{dir}"
else
warn "Couldn't read #{path}. Run `rubyforge setup`."
end
desc 'Post announcement to rubyforge.'
task :post_news do
require 'rubyforge'
subject, title, body, urls = announcement
rf = RubyForge.new.configure
rf.login
rf.post_news(rubyforge_name, subject, "#{title}\n\n#{body}")
puts "Posted to rubyforge"
end
end
end
end
|