Mercurial > cpython-lru_cache-weakref
diff Tools/scripts/diff.py @ 29386:cd5ecc5b38eb legacy-trunk
Added a command line interface for difflib.py
| author | Raymond Hettinger <python@rcn.com> |
|---|---|
| date | Sun, 08 Jun 2003 23:04:17 +0000 |
| parents | |
| children | 4fab4a5cce2f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Tools/scripts/diff.py Sun Jun 08 23:04:17 2003 +0000 @@ -0,0 +1,41 @@ +""" 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) +
