diff --git a/Misc/NEWS b/Misc/NEWS index 9fc2ca99b61..77bc70060a7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -759,6 +759,8 @@ Tests Tools/Demos ----------- +- Issue #18974: Tools/scripts/diff.py now uses argparse instead of optparse. + - Issue #21906: Make Tools/scripts/md5sum.py work in Python 3. Patch by Zachary Ware. diff --git a/Tools/scripts/diff.py b/Tools/scripts/diff.py index 8be527fd627..9720a431557 100755 --- a/Tools/scripts/diff.py +++ b/Tools/scripts/diff.py @@ -8,7 +8,7 @@ """ -import sys, os, time, difflib, optparse +import sys, os, time, difflib, argparse from datetime import datetime, timezone def file_mtime(path): @@ -18,23 +18,25 @@ def file_mtime(path): def main(): - 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") + 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() n = options.lines - fromfile, tofile = args + fromfile = options.fromfile + tofile = options.tofile fromdate = file_mtime(fromfile) todate = file_mtime(tofile)