add "jsonpatch" commandline utility

This commit is contained in:
Stefan Kögl
2013-10-11 20:43:20 +02:00
parent 3b841b3ffc
commit 9290130d30
2 changed files with 44 additions and 1 deletions

42
bin/jsonpatch Executable file
View File

@@ -0,0 +1,42 @@
#!/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='Apply a JSON patch on a JSON files')
parser.add_argument('ORIGINAL', type=argparse.FileType('r'),
help='Original file')
parser.add_argument('PATCH', type=argparse.FileType('r'),
help='Patch file')
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:
patch_files()
except KeyboardInterrupt:
sys.exit(1)
def patch_files():
""" Diffs two JSON files and prints a patch """
args = parser.parse_args()
doc = json.load(args.ORIGINAL)
patch = json.load(args.PATCH)
result = jsonpatch.apply_patch(doc, patch)
print(json.dumps(result, indent=args.indent))
if __name__ == "__main__":
main()

View File

@@ -52,10 +52,11 @@ setup(name=PACKAGE,
url=WEBSITE,
py_modules=MODULES,
package_data={'': ['requirements.txt']},
scripts=['bin/jsondiff'],
scripts=['bin/jsondiff', 'bin/jsonpatch'],
entry_poimts = {
'console_scripts': [
'jsondiff = jsondiff:main',
'jsonpatch = jsonpatch:main',
]},
**OPTIONS
)