def gem(name, *args)
options = args.last.is_a?(Hash) ? args.pop : {}
version = args.last
keys = :vendored_at, :path, :only, :except, :git, :path, :bundle, :require_as, :tag, :branch, :ref
unless (invalid = options.keys - keys).empty?
raise InvalidKey, "Only #{keys.join(", ")} are valid options to #gem. You used #{invalid.join(", ")}"
end
if path = options.delete(:vendored_at)
options[:path] = path
warn "The :vendored_at option is deprecated. Use :path instead.\nFrom #{caller[0]}"
end
options[:only] = _combine_only(options[:only] || options["only"])
options[:except] = _combine_except(options[:except] || options["except"])
dep = Dependency.new(name, options.merge(:version => version))
if options.key?(:bundle) && !options[:bundle]
dep.source = SystemGemSource.new(@bundle)
elsif @git || options[:git]
dep.source = _handle_git_option(name, version, options)
elsif @directory || options[:path]
dep.source = _handle_vendored_option(name, version, options)
end
@environment.dependencies << dep
end