You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.2 KiB
42 lines
1.2 KiB
#!/home/patrickd/swarms/swarmsenv/bin/python3.12
|
|
# -*- coding: utf-8 -*-
|
|
|
|
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()
|