mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	BASERUBY may still be 1.8.x. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			Ruby
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			Ruby
		
	
	
		
			Executable file
		
	
	
	
	
#! ./miniruby
 | 
						|
 | 
						|
def diff2index(cmd, *argv)
 | 
						|
  lines = []
 | 
						|
  path = nil
 | 
						|
  output = `#{cmd} #{argv.join(" ")}`
 | 
						|
  if defined? Encoding::BINARY
 | 
						|
    output.force_encoding Encoding::BINARY
 | 
						|
  end
 | 
						|
  output.each_line do |line|
 | 
						|
    case line
 | 
						|
    when /^Index: (\S*)/, /^diff --git [a-z]\/(\S*) [a-z]\/\1/
 | 
						|
      path = $1
 | 
						|
    when /^@@\s*-[,\d]+ +\+(\d+)[,\d]*\s*@@(?: +([A-Za-z_][A-Za-z_0-9 ]*[A-Za-z_0-9]))?/
 | 
						|
      line = $1.to_i
 | 
						|
      ent = "\t* #{path}"
 | 
						|
      ent << " (#{$2})" if $2
 | 
						|
      lines << "#{ent}:"
 | 
						|
    end
 | 
						|
  end
 | 
						|
  lines.uniq!
 | 
						|
  lines.empty? ? nil : lines
 | 
						|
end
 | 
						|
 | 
						|
if `svnversion` =~ /^\d+/
 | 
						|
  cmd = "svn diff --diff-cmd=diff -x-pU0"
 | 
						|
  change = diff2index(cmd, ARGV)
 | 
						|
elsif File.directory?(".git")
 | 
						|
  cmd = "git diff -U0"
 | 
						|
  change = diff2index(cmd, ARGV) || diff2index(cmd, "--cached", ARGV)
 | 
						|
else
 | 
						|
  abort "does not seem to be under a vcs"
 | 
						|
end
 | 
						|
puts change if change
 |