summaryrefslogtreecommitdiff
path: root/lib/rubygems/commands/setup_command.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-30 04:30:12 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-30 04:30:12 +0000
commit42968fe65af25c6348719272c3e81f721e4a5a35 (patch)
tree783500b77acbb98ed09367bd23d89a02697e9259 /lib/rubygems/commands/setup_command.rb
parent3c4633a3a1ace272566618c9e002489d3c03b569 (diff)
* lib/rubygems/commands/setup_command.rb: Remove old files on install
of RubyGems. (not by rbinstall.rb). * test/rubygems/test_gem_commands_setup_command.rb: Test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/commands/setup_command.rb')
-rw-r--r--lib/rubygems/commands/setup_command.rb29
1 files changed, 27 insertions, 2 deletions
diff --git a/lib/rubygems/commands/setup_command.rb b/lib/rubygems/commands/setup_command.rb
index 2f1cf0091d..4d7b07c0d8 100644
--- a/lib/rubygems/commands/setup_command.rb
+++ b/lib/rubygems/commands/setup_command.rb
@@ -137,6 +137,8 @@ By default, this RubyGems will install gem as:
remove_old_bin_files bin_dir
+ remove_old_lib_files lib_dir
+
say "RubyGems #{Gem::VERSION} installed"
uninstall_old_gemcutter
@@ -280,9 +282,9 @@ TEXT
def install_lib(lib_dir)
say "Installing RubyGems" if @verbose
- Dir.chdir 'lib' do
- lib_files = Dir[File.join('**', '*rb')]
+ lib_files = rb_files_in 'lib'
+ Dir.chdir 'lib' do
lib_files.each do |lib_file|
dest_file = File.join lib_dir, lib_file
dest_dir = File.dirname dest_file
@@ -379,6 +381,12 @@ TEXT
[lib_dir, bin_dir]
end
+ def rb_files_in dir
+ Dir.chdir dir do
+ Dir[File.join('**', '*rb')]
+ end
+ end
+
def remove_old_bin_files(bin_dir)
old_bin_files = {
'gem_mirror' => 'gem mirror',
@@ -411,6 +419,23 @@ abort "#{deprecation_message}"
end
end
+ def remove_old_lib_files lib_dir
+ lib_files = rb_files_in 'lib'
+
+ old_lib_files = rb_files_in lib_dir
+
+ to_remove = old_lib_files - lib_files
+
+ Dir.chdir lib_dir do
+ to_remove.each do |file|
+ FileUtils.rm_f file
+
+ warn "unable to remove old file #{file} please remove it by hand" if
+ File.exist? file
+ end
+ end
+ end
+
def uninstall_old_gemcutter
require 'rubygems/uninstaller'