diff options
Diffstat (limited to 'Tools/scripts/diff.py')
-rwxr-xr-x | Tools/scripts/diff.py | 56 |
1 files changed, 24 insertions, 32 deletions
diff --git a/Tools/scripts/diff.py b/Tools/scripts/diff.py index 96199b8..c4c2e10 100755 --- a/Tools/scripts/diff.py +++ b/Tools/scripts/diff.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python """ Command line interface to difflib.py providing diffs in four formats: * ndiff: lists every line and highlights interline changes. @@ -8,42 +8,34 @@ """ -import sys, os, difflib, argparse -from datetime import datetime, timezone - -def file_mtime(path): - t = datetime.fromtimestamp(os.stat(path).st_mtime, - timezone.utc) - return t.astimezone().isoformat() +import sys, os, time, difflib, optparse def main(): - parser = argparse.ArgumentParser() - parser.add_argument('-c', action='store_true', default=False, - help='Produce a context format diff (default)') - parser.add_argument('-u', action='store_true', default=False, - help='Produce a unified format diff') - parser.add_argument('-m', action='store_true', default=False, - help='Produce HTML side by side diff ' - '(can use -c and -l in conjunction)') - parser.add_argument('-n', action='store_true', default=False, - help='Produce a ndiff format diff') - parser.add_argument('-l', '--lines', type=int, default=3, - help='Set number of context lines (default 3)') - parser.add_argument('fromfile') - parser.add_argument('tofile') - options = parser.parse_args() + 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("-m", action="store_true", default=False, help='Produce HTML side by side diff (can use -c and -l in conjunction)') + 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 = options.fromfile - tofile = options.tofile - - fromdate = file_mtime(fromfile) - todate = file_mtime(tofile) - with open(fromfile) as ff: - fromlines = ff.readlines() - with open(tofile) as tf: - tolines = tf.readlines() + fromfile, tofile = args + + fromdate = time.ctime(os.stat(fromfile).st_mtime) + todate = time.ctime(os.stat(tofile).st_mtime) + with open(fromfile, 'U') as f: + fromlines = f.readlines() + with open(tofile, 'U') as f: + tolines = f.readlines() if options.u: diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n) |