mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* tool/rbuninstall.rb: show progress if tty and add --tty option. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42932 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable file
		
	
	
	
	
#! /usr/bin/ruby -nl
 | 
						|
BEGIN {
 | 
						|
  $dryrun = false
 | 
						|
  $tty = STDOUT.tty?
 | 
						|
  until ARGV.empty?
 | 
						|
    case ARGV[0]
 | 
						|
    when /\A--destdir=(.*)/
 | 
						|
      $destdir = $1
 | 
						|
    when /\A-n\z/
 | 
						|
      $dryrun = true
 | 
						|
    when /\A--(?:no-)?tty\z/
 | 
						|
      $tty = !$1
 | 
						|
    else
 | 
						|
      break
 | 
						|
    end
 | 
						|
    ARGV.shift
 | 
						|
  end
 | 
						|
  $dirs = []
 | 
						|
  $files = []
 | 
						|
}
 | 
						|
list = ($_.chomp!('/') ? $dirs : $files)
 | 
						|
$_ = File.join($destdir, $_) if $destdir
 | 
						|
list << $_
 | 
						|
END {
 | 
						|
  status = true
 | 
						|
  $\ = ors = (!$dryrun and $tty) ? "\e[K\r" : "\n"
 | 
						|
  $files.each do |file|
 | 
						|
    print "rm #{file}"
 | 
						|
    unless $dryrun
 | 
						|
      begin
 | 
						|
        File.unlink(file)
 | 
						|
      rescue Errno::ENOENT
 | 
						|
      rescue
 | 
						|
        status = false
 | 
						|
        puts $!
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
  unlink = {}
 | 
						|
  $dirs.each do |dir|
 | 
						|
    unlink[dir] = true
 | 
						|
  end
 | 
						|
  while dir = $dirs.pop
 | 
						|
    print "rmdir #{dir}"
 | 
						|
    unless $dryrun
 | 
						|
      begin
 | 
						|
        begin
 | 
						|
          unlink.delete(dir)
 | 
						|
          Dir.rmdir(dir)
 | 
						|
        rescue Errno::ENOTDIR
 | 
						|
          raise unless File.symlink?(dir)
 | 
						|
          File.unlink(dir)
 | 
						|
        end
 | 
						|
      rescue Errno::ENOENT, Errno::ENOTEMPTY
 | 
						|
      rescue
 | 
						|
        status = false
 | 
						|
        puts $!
 | 
						|
      else
 | 
						|
        parent = File.dirname(dir)
 | 
						|
        $dirs.push(parent) unless parent == dir or unlink[parent]
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
  $\ = nil
 | 
						|
  print ors.chomp
 | 
						|
  exit(status)
 | 
						|
}
 |