mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 21:14:23 +02:00
Merge rubygems/rubygems from upstream.
The current master branch is
97b264f0fa
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67415 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5370244337
commit
f28be7e02d
34 changed files with 264 additions and 184 deletions
|
@ -148,10 +148,13 @@ that is a dependency of an existing gem. You can use the
|
|||
|
||||
def uninstall_specific
|
||||
deplist = Gem::DependencyList.new
|
||||
original_gem_version = {}
|
||||
|
||||
get_all_gem_names_and_versions.each do |name, version|
|
||||
requirement = Array(version || options[:version])
|
||||
gem_specs = Gem::Specification.find_all_by_name(name, *requirement)
|
||||
original_gem_version[name] = version || options[:version]
|
||||
|
||||
gem_specs = Gem::Specification.find_all_by_name(name, original_gem_version[name])
|
||||
|
||||
say("Gem '#{name}' is not installed") if gem_specs.empty?
|
||||
gem_specs.each do |spec|
|
||||
deplist.add spec
|
||||
|
@ -160,16 +163,23 @@ that is a dependency of an existing gem. You can use the
|
|||
|
||||
deps = deplist.strongly_connected_components.flatten.reverse
|
||||
|
||||
gems_to_uninstall = {}
|
||||
|
||||
deps.each do |dep|
|
||||
options[:version] = dep.version
|
||||
uninstall_gem(dep.name)
|
||||
unless gems_to_uninstall[dep.name]
|
||||
gems_to_uninstall[dep.name] = true
|
||||
|
||||
unless original_gem_version[dep.name] == Gem::Requirement.default
|
||||
options[:version] = dep.version
|
||||
end
|
||||
|
||||
uninstall_gem(dep.name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def uninstall_gem(gem_name)
|
||||
uninstall(gem_name)
|
||||
rescue Gem::InstallError
|
||||
nil
|
||||
rescue Gem::GemNotInHomeException => e
|
||||
spec = e.spec
|
||||
alert("In order to remove #{spec.name}, please execute:\n" +
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue