1 """ Command line interface to difflib.py providing diffs in four formats:
3 * ndiff: lists every line and highlights interline changes.
4 * context: highlights clusters of changes in a before/after format.
5 * unified: highlights clusters of changes in an inline format.
6 * html: generates side by side comparison with change highlights.
10 import sys
, os
, time
, difflib
, optparse
14 usage
= "usage: %prog [options] fromfile tofile"
15 parser
= optparse
.OptionParser(usage
)
16 parser
.add_option("-c", action
="store_true", default
=False, help='Produce a context format diff (default)')
17 parser
.add_option("-u", action
="store_true", default
=False, help='Produce a unified format diff')
18 parser
.add_option("-m", action
="store_true", default
=False, help='Produce HTML side by side diff (can use -c and -l in conjunction)')
19 parser
.add_option("-n", action
="store_true", default
=False, help='Produce a ndiff format diff')
20 parser
.add_option("-l", "--lines", type="int", default
=3, help='Set number of context lines (default 3)')
21 (options
, args
) = parser
.parse_args()
27 parser
.error("need to specify both a fromfile and tofile")
30 fromfile
, tofile
= args
32 fromdate
= time
.ctime(os
.stat(fromfile
).st_mtime
)
33 todate
= time
.ctime(os
.stat(tofile
).st_mtime
)
34 fromlines
= open(fromfile
, 'U').readlines()
35 tolines
= open(tofile
, 'U').readlines()
38 diff
= difflib
.unified_diff(fromlines
, tolines
, fromfile
, tofile
, fromdate
, todate
, n
=n
)
40 diff
= difflib
.ndiff(fromlines
, tolines
)
42 diff
= difflib
.HtmlDiff().make_file(fromlines
,tolines
,fromfile
,tofile
,context
=options
.c
,numlines
=n
)
44 diff
= difflib
.context_diff(fromlines
, tolines
, fromfile
, tofile
, fromdate
, todate
, n
=n
)
46 sys
.stdout
.writelines(diff
)
48 if __name__
== '__main__':