def run(options)
begin
Bundler.bundle_path.mkpath unless Bundler.bundle_path.exist?
rescue Errno::EEXIST
raise PathError, "Could not install to path `#{Bundler.settings[:path]}` " +
"because of an invalid symlink. Remove the symlink so the directory can be created."
end
if Bundler.settings[:frozen]
@definition.ensure_equivalent_gemfile_and_lockfile(options[:deployment])
end
if dependencies.empty?
Bundler.ui.warn "The Gemfile specifies no dependencies"
return
end
if Bundler.default_lockfile.exist? && !options["update"]
begin
tmpdef = Definition.build(Bundler.default_gemfile, Bundler.default_lockfile, nil)
local = true unless tmpdef.new_platform? || tmpdef.missing_specs.any?
rescue BundlerError
end
end
unless local
options["local"] ?
@definition.resolve_with_cache! :
@definition.resolve_remotely!
end
specs.each do |spec|
install_gem_from_spec(spec)
end
lock
end