From 42968fe65af25c6348719272c3e81f721e4a5a35 Mon Sep 17 00:00:00 2001 From: drbrain Date: Fri, 30 Nov 2012 04:30:12 +0000 Subject: * 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 --- lib/rubygems/commands/setup_command.rb | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'lib/rubygems/commands') 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' -- cgit v1.2.3