@@ -12,8 +12,17 @@ import argparse
1212
1313parser = argparse .ArgumentParser (
1414 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+
1726parser .add_argument ('FILE' , type = argparse .FileType ('r' ), nargs = '+' ,
1827 help = 'Files for which the pointer should be resolved' )
1928parser .add_argument ('--indent' , type = int , default = None ,
@@ -29,10 +38,24 @@ def main():
2938 sys .exit (1 )
3039
3140
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+
3253def resolve_files ():
3354 """ Resolve a JSON pointer on JSON files """
3455 args = parser .parse_args ()
35- ptr = json .load (args .POINTER )
56+
57+ ptr = parse_pointer (args )
58+
3659 for f in args .FILE :
3760 doc = json .load (f )
3861 try :
0 commit comments