diff options
author | Stefan Kögl <stefan@skoegl.net> | 2017-12-31 12:00:35 +0100 |
---|---|---|
committer | Stefan Kögl <stefan@skoegl.net> | 2017-12-31 12:00:35 +0100 |
commit | 0fb516fa310db0eb4900a7b529c64bde290390bb (patch) | |
tree | 752d327e42580f2ca9cfa22bf944b04d54533d91 /bin/jsonpointer | |
parent | bae64f61ec5f1057342faf19b89d5bd571b038da (diff) | |
download | python-json-pointer-cmd-ptr-arg.tar.gz |
Accept pointer as argument in commandline utilitycmd-ptr-arg
Fixes #25
Diffstat (limited to 'bin/jsonpointer')
-rwxr-xr-x | bin/jsonpointer | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/bin/jsonpointer b/bin/jsonpointer index 1d49fae..d577d01 100755 --- a/bin/jsonpointer +++ b/bin/jsonpointer @@ -12,8 +12,17 @@ import argparse parser = argparse.ArgumentParser( description='Resolve a JSON pointer on JSON files') -parser.add_argument('POINTER', type=argparse.FileType('r'), - help='File containing a JSON pointer expression') + +# Accept pointer as argument or as file +ptr_group = parser.add_mutually_exclusive_group(required=True) + +ptr_group.add_argument('-f', '--pointer-file', type=argparse.FileType('r'), + nargs='?', + help='File containing a JSON pointer expression') + +ptr_group.add_argument('POINTER', type=str, nargs='?', + help='A JSON pointer expression') + parser.add_argument('FILE', type=argparse.FileType('r'), nargs='+', help='Files for which the pointer should be resolved') parser.add_argument('--indent', type=int, default=None, @@ -29,10 +38,24 @@ def main(): sys.exit(1) +def parse_pointer(args): + if args.POINTER: + ptr = args.POINTER + elif args.pointer_file: + ptr = args.pointer_file.read().strip() + else: + parser.print_usage() + sys.exit(1) + + return ptr + + def resolve_files(): """ Resolve a JSON pointer on JSON files """ args = parser.parse_args() - ptr = json.load(args.POINTER) + + ptr = parse_pointer(args) + for f in args.FILE: doc = json.load(f) try: |