diff options
| author | TANIGUCHI Takaki <takaki@debian.org> | 2014-06-23 00:35:03 +0900 |
|---|---|---|
| committer | git-ubuntu importer <ubuntu-devel-discuss@lists.ubuntu.com> | 2014-06-22 22:20:12 +0000 |
| commit | c15b8c5cb8f7740fa75126ce27b170199f49ff76 (patch) | |
| tree | f602a61b8e51583149499f7acf9d5d3a3778e316 /bin | |
| parent | e9dc8408f5f4099804e572192634bcb0ffd1873c (diff) | |
0.4.1-1 (patches unapplied)import/0.4.1-1ubuntu/wily-develubuntu/wilyubuntu/vivid-develubuntu/vividubuntu/utopic-proposedubuntu/utopic-develubuntu/utopicdebian/jessie
Imported using git-ubuntu import.
Notes
Notes:
* New upstream release
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/jp | 70 |
1 files changed, 58 insertions, 12 deletions
@@ -1,17 +1,63 @@ #!/usr/bin/env python -import jmespath import sys import json +import argparse + +import jmespath +from jmespath import exceptions +from jmespath.compat import OrderedDict + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('expression') + parser.add_argument('-o', '--ordered', action='store_true', + help='Preserve the order of hash keys, which ' + 'are normally unordered.') + parser.add_argument('-f', '--filename', + help=('The filename containing the input data. ' + 'If a filename is not given then data is ' + 'read from stdin.')) + parser.add_argument('--ast', action='store_true', + help=('Pretty print the AST, do not search the data.')) + args = parser.parse_args() + expression = args.expression + if args.ast: + # Only print the AST + expression = jmespath.compile(args.expression) + sys.stdout.write(str(expression)) + sys.stdout.write('\n') + return 0 + if args.filename: + with open(args.filename, 'r') as f: + data = json.load(f) + else: + data = sys.stdin.read() + if args.ordered: + data = json.loads(data, object_pairs_hook=OrderedDict) + else: + data = json.loads(data) + try: + sys.stdout.write(json.dumps( + jmespath.search(expression, data), indent=4)) + sys.stdout.write('\n') + except exceptions.ArityError as e: + sys.stderr.write("invalid-arity: %s\n" % e) + return 1 + except exceptions.JMESPathTypeError as e: + sys.stderr.write("invalid-type: %s\n" % e) + return 1 + except exceptions.UnknownFunctionError as e: + sys.stderr.write("unknown-function: %s\n" % e) + return 1 + except exceptions.LexerError as e: + sys.stderr.write("syntax-error: %s\n" % e) + return 1 + except exceptions.ParseError as e: + sys.stderr.write("syntax-error: %s\n" % e) + return 1 + -if not len(sys.argv) >= 2: - sys.stderr.write('usage: jp <expression> <filepath>\n\n') - sys.exit(1) -expression = sys.argv[1] -if len(sys.argv) == 3: - with open(sys.argv[2], 'r') as f: - data = json.load(f) -else: - data = json.load(sys.stdin) -sys.stdout.write(json.dumps(jmespath.search(expression, data), indent=4)) -sys.stdout.write('\n') +if __name__ == '__main__': + sys.exit(main()) |
