aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/commands/cleanup_command.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/commands/cleanup_command.rb')
-rw-r--r--lib/rubygems/commands/cleanup_command.rb11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/rubygems/commands/cleanup_command.rb b/lib/rubygems/commands/cleanup_command.rb
index 46f89f1bb8..83ee6b5c7c 100644
--- a/lib/rubygems/commands/cleanup_command.rb
+++ b/lib/rubygems/commands/cleanup_command.rb
@@ -76,6 +76,9 @@ If no gems are named all gems in GEM_HOME are cleaned.
end
def clean_gems
+ @original_home = Gem.dir
+ @original_path = Gem.path
+
get_primary_gems
get_candidate_gems
get_gems_to_cleanup
@@ -87,9 +90,6 @@ If no gems are named all gems in GEM_HOME are cleaned.
deps = deplist.strongly_connected_components.flatten
- @original_home = Gem.dir
- @original_path = Gem.path
-
deps.reverse_each do |spec|
uninstall_dep spec
end
@@ -108,6 +108,7 @@ If no gems are named all gems in GEM_HOME are cleaned.
end
def get_gems_to_cleanup
+
gems_to_cleanup = @candidate_gems.select { |spec|
@primary_gems[spec.name].version != spec.version
}
@@ -116,6 +117,10 @@ If no gems are named all gems in GEM_HOME are cleaned.
spec.default_gem?
}
+ gems_to_cleanup = gems_to_cleanup.select { |spec|
+ spec.base_dir == @original_home
+ }
+
@default_gems += default_gems
@default_gems.uniq!
@gems_to_cleanup = gems_to_cleanup.uniq