home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 December / maximum-cd-2009-12.iso / DiscContents / YoFrankie.msi / CS_runtime.cab / diff.py.6B976ADF_8AE8_434E_B282_A06C7F624D2F < prev    next >
Encoding:
Text File  |  2005-10-28  |  2.0 KB  |  50 lines

  1. """ Command line interface to difflib.py providing diffs in four formats:
  2.  
  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.
  7.  
  8. """
  9.  
  10. import sys, os, time, difflib, optparse
  11.  
  12. def main():
  13.  
  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()
  22.  
  23.     if len(args) == 0:
  24.         parser.print_help()
  25.         sys.exit(1)
  26.     if len(args) != 2:
  27.         parser.error("need to specify both a fromfile and tofile")
  28.  
  29.     n = options.lines
  30.     fromfile, tofile = args
  31.  
  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()
  36.  
  37.     if options.u:
  38.         diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
  39.     elif options.n:
  40.         diff = difflib.ndiff(fromlines, tolines)
  41.     elif options.m:
  42.         diff = difflib.HtmlDiff().make_file(fromlines,tolines,fromfile,tofile,context=options.c,numlines=n)
  43.     else:
  44.         diff = difflib.context_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
  45.  
  46.     sys.stdout.writelines(diff)
  47.  
  48. if __name__ == '__main__':
  49.     main()
  50.