| |
|
| | |
| |
|
| | from __future__ import print_function |
| |
|
| | import sys |
| | import json |
| | import jsonpatch |
| | import argparse |
| |
|
| |
|
| | parser = argparse.ArgumentParser(description='Diff two JSON files') |
| | parser.add_argument('FILE1', type=argparse.FileType('r')) |
| | parser.add_argument('FILE2', type=argparse.FileType('r')) |
| | parser.add_argument('--indent', type=int, default=None, |
| | help='Indent output by n spaces') |
| | parser.add_argument('-u', '--preserve-unicode', action='store_true', |
| | help='Output Unicode character as-is without using Code Point') |
| | parser.add_argument('-v', '--version', action='version', |
| | version='%(prog)s ' + jsonpatch.__version__) |
| |
|
| |
|
| | def main(): |
| | try: |
| | diff_files() |
| | except KeyboardInterrupt: |
| | sys.exit(1) |
| |
|
| |
|
| | def diff_files(): |
| | """ Diffs two JSON files and prints a patch """ |
| | args = parser.parse_args() |
| | doc1 = json.load(args.FILE1) |
| | doc2 = json.load(args.FILE2) |
| | patch = jsonpatch.make_patch(doc1, doc2) |
| | if patch.patch: |
| | print(json.dumps(patch.patch, indent=args.indent, ensure_ascii=not(args.preserve_unicode))) |
| | sys.exit(1) |
| |
|
| | if __name__ == "__main__": |
| | main() |
| |
|