diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-09-13 07:24:48 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-09-13 07:24:48 +0000 |
commit | 6217307f436172aaa6ac466736913ba87f61575d (patch) | |
tree | 935b1f098261010effebd9fd21f10b9021633a96 /tool | |
parent | 80d8216415c3e42aab8237ef0b5696b488ecf387 (diff) | |
download | bundler-6217307f436172aaa6ac466736913ba87f61575d.tar.gz |
rbuninstall.rb: rmdir -p
* tool/rbuninstall.rb: remove parent directories.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool')
-rwxr-xr-x | tool/rbuninstall.rb | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/tool/rbuninstall.rb b/tool/rbuninstall.rb index 1d7f654e20..d04800bac7 100755 --- a/tool/rbuninstall.rb +++ b/tool/rbuninstall.rb @@ -20,15 +20,10 @@ $_ = File.join($destdir, $_) if $destdir list << $_ END { status = true - if $dryrun - $files.each do |file| + $files.each do |file| + if $dryrun puts "rm #{file}" - end - $dirs.reverse_each do |dir| - puts "rmdir #{dir}" - end - else - $files.each do |file| + else begin File.unlink(file) rescue Errno::ENOENT @@ -37,9 +32,18 @@ END { puts $! end end - $dirs.reverse_each do |dir| + end + unlink = {} + $dirs.each do |dir| + unlink[dir] = true + end + while dir = $dirs.pop + if $dryrun + puts "rmdir #{dir}" + else begin begin + unlink.delete(dir) Dir.rmdir(dir) rescue Errno::ENOTDIR raise unless File.symlink?(dir) @@ -49,6 +53,9 @@ END { rescue status = false puts $! + else + parent = File.dirname(dir) + $dirs.push(parent) unless parent == dir or unlink[parent] end end end |