mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
""" Command line interface to difflib.py providing diffs in three formats:
 | 
						|
 | 
						|
* ndiff:    lists every line and highlights interline changes.
 | 
						|
* context:  highlights clusters of changes in a before/after format
 | 
						|
* unified:  highlights clusters of changes in an inline format.
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
import sys, os, time, difflib, optparse
 | 
						|
 | 
						|
usage = "usage: %prog [options] fromfile tofile"
 | 
						|
parser = optparse.OptionParser(usage)
 | 
						|
parser.add_option("-c", action="store_true", default=False, help='Produce a context format diff (default)')
 | 
						|
parser.add_option("-u", action="store_true", default=False, help='Produce a unified format diff')
 | 
						|
parser.add_option("-n", action="store_true", default=False, help='Produce a ndiff format diff')
 | 
						|
parser.add_option("-l", "--lines", type="int", default=3, help='Set number of context lines (default 3)')
 | 
						|
(options, args) = parser.parse_args()
 | 
						|
 | 
						|
if len(args) == 0:
 | 
						|
    parser.print_help()
 | 
						|
    sys.exit(1)
 | 
						|
if len(args) != 2:
 | 
						|
    parser.error("need to specify both a fromfile and tofile")
 | 
						|
 | 
						|
n = options.lines
 | 
						|
fromfile, tofile = args
 | 
						|
 | 
						|
fromdate = time.ctime(os.stat(fromfile).st_mtime)
 | 
						|
todate = time.ctime(os.stat(tofile).st_mtime)
 | 
						|
fromlines = open(fromfile).readlines()
 | 
						|
tolines = open(tofile).readlines()
 | 
						|
 | 
						|
if options.u:
 | 
						|
    diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
 | 
						|
elif options.n:
 | 
						|
    diff = difflib.ndiff(fromlines, tolines)
 | 
						|
else:
 | 
						|
    diff = difflib.context_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
 | 
						|
 | 
						|
sys.stdout.writelines(diff)
 | 
						|
 |