summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kögl <stefan@skoegl.net>2013-10-11 20:33:29 +0200
committerStefan Kögl <stefan@skoegl.net>2013-10-11 20:33:29 +0200
commit3b841b3ffc54f4e1ea65320c80dcc4ce0b139a36 (patch)
tree8494503816c8f672af80505f21af2b9ab28e05b9
parentf6f3cd235337209fc96b71316215a40d1cd3026c (diff)
downloadpython-json-patch-3b841b3ffc54f4e1ea65320c80dcc4ce0b139a36.tar.gz
add "jsondiff" commandline utility
-rwxr-xr-xbin/jsondiff39
-rw-r--r--setup.py5
2 files changed, 44 insertions, 0 deletions
diff --git a/bin/jsondiff b/bin/jsondiff
new file mode 100755
index 0000000..81c83a7
--- /dev/null
+++ b/bin/jsondiff
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from __future__ import print_function
+
+import sys
+import os.path
+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('-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)
+ print(json.dumps(patch.patch, indent=args.indent))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/setup.py b/setup.py
index f500075..0295377 100644
--- a/setup.py
+++ b/setup.py
@@ -52,5 +52,10 @@ setup(name=PACKAGE,
url=WEBSITE,
py_modules=MODULES,
package_data={'': ['requirements.txt']},
+ scripts=['bin/jsondiff'],
+ entry_poimts = {
+ 'console_scripts': [
+ 'jsondiff = jsondiff:main',
+ ]},
**OPTIONS
)