# File lib/rubyforge.rb, line 206
  def add_release(group_id, package_id, release_name, *files)
    group_id        = lookup "group", group_id
    package_id      = lookup "package", package_id
    release_date    = @userconfig["release_date"]
    release_notes   = @userconfig["release_notes"]
    release_changes = @userconfig["release_changes"]
    preformatted    = @userconfig["preformatted"]
    release_date ||= Time.now.strftime("%Y-%m-%d %H:%M")
    release_notes = IO::read(release_notes) if
      test(?e, release_notes) if release_notes
    release_changes = IO::read(release_changes) if
      test(?e, release_changes) if release_changes
    preformatted = preformatted ? 1 : 0

    form = {
        "release[name]"    => release_name,
        "release[release_date]"     => release_date,
        "release[notes]"   => release_notes,
        "release[changes]" => release_changes,
        "release[preformatted]"    => preformatted,
    }

    url = "/packages/#{package_id}/releases"
    json = run url, form
    
    release_id = JSON.parse(json)["release_id"].to_i rescue nil
    unless release_id then
      puts json if $DEBUG
      raise "Couldn't get release_id, upload failed?"
    end

    # FIXME
    #raise "Invalid package_id #{package_id}" if html[/Invalid package_id/]
    #raise "You have already released this version." if html[/That filename already exists in this project/]

    files.each do |file|
      add_file(group_id, package_id, release_id, file)
    end

    package_name = @autoconfig["package_ids"].invert[package_id]
    raise "unknown package name for #{package_id}" if package_name.nil?
    @autoconfig["release_ids"][package_name] ||= {}
    @autoconfig["release_ids"][package_name][release_name] = release_id
    save_autoconfig

    release_id
  end