@@ -12,8 +12,17 @@ import argparse
12
12
13
13
parser = argparse .ArgumentParser (
14
14
description = 'Resolve a JSON pointer on JSON files' )
15
- parser .add_argument ('POINTER' , type = argparse .FileType ('r' ),
16
- help = 'File containing a JSON pointer expression' )
15
+
16
+ # Accept pointer as argument or as file
17
+ ptr_group = parser .add_mutually_exclusive_group (required = True )
18
+
19
+ ptr_group .add_argument ('-f' , '--pointer-file' , type = argparse .FileType ('r' ),
20
+ nargs = '?' ,
21
+ help = 'File containing a JSON pointer expression' )
22
+
23
+ ptr_group .add_argument ('POINTER' , type = str , nargs = '?' ,
24
+ help = 'A JSON pointer expression' )
25
+
17
26
parser .add_argument ('FILE' , type = argparse .FileType ('r' ), nargs = '+' ,
18
27
help = 'Files for which the pointer should be resolved' )
19
28
parser .add_argument ('--indent' , type = int , default = None ,
@@ -29,10 +38,24 @@ def main():
29
38
sys .exit (1 )
30
39
31
40
41
+ def parse_pointer (args ):
42
+ if args .POINTER :
43
+ ptr = args .POINTER
44
+ elif args .pointer_file :
45
+ ptr = args .pointer_file .read ().strip ()
46
+ else :
47
+ parser .print_usage ()
48
+ sys .exit (1 )
49
+
50
+ return ptr
51
+
52
+
32
53
def resolve_files ():
33
54
""" Resolve a JSON pointer on JSON files """
34
55
args = parser .parse_args ()
35
- ptr = json .load (args .POINTER )
56
+
57
+ ptr = parse_pointer (args )
58
+
36
59
for f in args .FILE :
37
60
doc = json .load (f )
38
61
try :
0 commit comments