class Bundler::Dsl

def _normalize_options(name, version, opts)

def _normalize_options(name, version, opts)
  _normalize_hash(opts)
  invalid_keys = opts.keys - %w(group git path name branch ref tag require)
  if invalid_keys.any?
    plural = invalid_keys.size > 1
    message = "You passed #{invalid_keys.map{|k| ':'+k }.join(", ")} "
    if plural
      message << "as options for gem '#{name}', but they are invalid."
    else
      message << "as an option for gem '#{name}', but it is invalid."
    end
    raise InvalidOption, message
  end
  group = opts.delete("group") || @group
  # Normalize git and path options
  ["git", "path"].each do |type|
    if param = opts[type]
      options = _version?(version) ? opts.merge("name" => name, "version" => version) : opts.dup
      source = send(type, param, options, :prepend => true)
      opts["source"] = source
    end
  end
  opts["source"] ||= @source
  opts["group"] = group
end