Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/diff.py @ 71557:65d5ecefd50d 3.2
Fix missing or wrong shebangs and missing executable bits for scripts (#10318)
| author | Éric Araujo <merwok@netwok.org> |
|---|---|
| date | Tue, 26 Jul 2011 18:01:08 +0200 |
| parents | ab588ce9e71f |
| children | ec95b94ea831 |
| rev | line source |
|---|---|
|
71557
65d5ecefd50d
Fix missing or wrong shebangs and missing executable bits for scripts (#10318)
Éric Araujo <merwok@netwok.org>
parents:
33666
diff
changeset
|
1 #!/usr/bin/env python3 |
|
33319
6d3bdd19beeb
Patch #914575: difflib side by side diff support, diff.py s/b/s HTML option.
Martin v. Löwis <martin@v.loewis.de>
parents:
33074
diff
changeset
|
2 """ Command line interface to difflib.py providing diffs in four formats: |
|
29386
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
3 |
|
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
4 * ndiff: lists every line and highlights interline changes. |
|
33319
6d3bdd19beeb
Patch #914575: difflib side by side diff support, diff.py s/b/s HTML option.
Martin v. Löwis <martin@v.loewis.de>
parents:
33074
diff
changeset
|
5 * context: highlights clusters of changes in a before/after format. |
|
29386
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
6 * unified: highlights clusters of changes in an inline format. |
|
33319
6d3bdd19beeb
Patch #914575: difflib side by side diff support, diff.py s/b/s HTML option.
Martin v. Löwis <martin@v.loewis.de>
parents:
33074
diff
changeset
|
7 * html: generates side by side comparison with change highlights. |
|
29386
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
8 |
|
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
9 """ |
|
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
10 |
|
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
11 import sys, os, time, difflib, optparse |
|
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
12 |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
13 def main(): |
|
29386
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
14 |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
15 usage = "usage: %prog [options] fromfile tofile" |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
16 parser = optparse.OptionParser(usage) |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
17 parser.add_option("-c", action="store_true", default=False, help='Produce a context format diff (default)') |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
18 parser.add_option("-u", action="store_true", default=False, help='Produce a unified format diff') |
|
33319
6d3bdd19beeb
Patch #914575: difflib side by side diff support, diff.py s/b/s HTML option.
Martin v. Löwis <martin@v.loewis.de>
parents:
33074
diff
changeset
|
19 parser.add_option("-m", action="store_true", default=False, help='Produce HTML side by side diff (can use -c and -l in conjunction)') |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
20 parser.add_option("-n", action="store_true", default=False, help='Produce a ndiff format diff') |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
21 parser.add_option("-l", "--lines", type="int", default=3, help='Set number of context lines (default 3)') |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
22 (options, args) = parser.parse_args() |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
23 |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
24 if len(args) == 0: |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
25 parser.print_help() |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
26 sys.exit(1) |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
27 if len(args) != 2: |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
28 parser.error("need to specify both a fromfile and tofile") |
|
29386
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
29 |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
30 n = options.lines |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
31 fromfile, tofile = args |
|
29386
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
32 |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
33 fromdate = time.ctime(os.stat(fromfile).st_mtime) |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
34 todate = time.ctime(os.stat(tofile).st_mtime) |
|
33666
ab588ce9e71f
Read the text files to be compared in universal-newline mode.
Tim Peters <tim.peters@gmail.com>
parents:
33319
diff
changeset
|
35 fromlines = open(fromfile, 'U').readlines() |
|
ab588ce9e71f
Read the text files to be compared in universal-newline mode.
Tim Peters <tim.peters@gmail.com>
parents:
33319
diff
changeset
|
36 tolines = open(tofile, 'U').readlines() |
|
29386
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
37 |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
38 if options.u: |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
39 diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n) |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
40 elif options.n: |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
41 diff = difflib.ndiff(fromlines, tolines) |
|
33319
6d3bdd19beeb
Patch #914575: difflib side by side diff support, diff.py s/b/s HTML option.
Martin v. Löwis <martin@v.loewis.de>
parents:
33074
diff
changeset
|
42 elif options.m: |
|
6d3bdd19beeb
Patch #914575: difflib side by side diff support, diff.py s/b/s HTML option.
Martin v. Löwis <martin@v.loewis.de>
parents:
33074
diff
changeset
|
43 diff = difflib.HtmlDiff().make_file(fromlines,tolines,fromfile,tofile,context=options.c,numlines=n) |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
44 else: |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
45 diff = difflib.context_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n) |
|
29386
cd5ecc5b38eb
Added a command line interface for difflib.py
Raymond Hettinger <python@rcn.com>
parents:
diff
changeset
|
46 |
|
33074
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
47 sys.stdout.writelines(diff) |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
48 |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
49 if __name__ == '__main__': |
|
981fff7363b9
[Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents:
32538
diff
changeset
|
50 main() |
