|
|
- #!/home/alpcentaur/ProjektA/PrototypeWebApp/venv/bin/python3.5
-
- import sys
- import json
- import argparse
- from pprint import pformat
-
- import jmespath
- from jmespath import exceptions
-
-
- def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('expression')
- 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(pformat(expression.parsed))
- 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()
- 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.ParseError as e:
- sys.stderr.write("syntax-error: %s\n" % e)
- return 1
-
-
- if __name__ == '__main__':
- sys.exit(main())
|