codekingpro/portable-devtools
115k
1#!D:\code\apps\devtools\python\python.exe
2# -*- coding: utf-8 -*-3 4from __future__ import print_function5 6import sys7import json8import jsonpatch9import argparse10 11 12parser = argparse.ArgumentParser(description='Diff two JSON files')13parser.add_argument('FILE1', type=argparse.FileType('r'))14parser.add_argument('FILE2', type=argparse.FileType('r'))15parser.add_argument('--indent', type=int, default=None,16 help='Indent output by n spaces')17parser.add_argument('-u', '--preserve-unicode', action='store_true',18 help='Output Unicode character as-is without using Code Point')19parser.add_argument('-v', '--version', action='version',20 version='%(prog)s ' + jsonpatch.__version__)21 22 23def main():24 try:25 diff_files()26 except KeyboardInterrupt:27 sys.exit(1)28 29 30def diff_files():31 """ Diffs two JSON files and prints a patch """32 args = parser.parse_args()33 doc1 = json.load(args.FILE1)34 doc2 = json.load(args.FILE2)35 patch = jsonpatch.make_patch(doc1, doc2)36 if patch.patch:37 print(json.dumps(patch.patch, indent=args.indent, ensure_ascii=not(args.preserve_unicode)))38 sys.exit(1)39 40if __name__ == "__main__":41 main()42 