module Hoe::RubyForge

def define_rubyforge_tasks # :nodoc:

:nodoc:
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

def initialize_rubyforge

def initialize_rubyforge
  require 'rubyforge'
  dependency_target << ['rubyforge', ">= #{::RubyForge::VERSION}"]
end