summaryrefslogtreecommitdiff
path: root/extract-from-json.py
diff options
context:
space:
mode:
Diffstat (limited to 'extract-from-json.py')
-rwxr-xr-xextract-from-json.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/extract-from-json.py b/extract-from-json.py
new file mode 100755
index 0000000000..e432b2b067
--- /dev/null
+++ b/extract-from-json.py
@@ -0,0 +1,56 @@
+#!/usr/bin/python
+
+import argparse
+import json
+import sys
+
+def parse_args():
+ parser = argparse.ArgumentParser(
+ description="""Extracts information from a json file by navigating the JSON object using a
+ sequence of property accessors and returning the JSON subtree, or the raw data, found
+ at that location."""
+ )
+
+ parser.add_argument(
+ '-f', '--file',
+ metavar='<project.json>',
+ help="Path to project.json file to parse",
+ required=True,
+ )
+
+ parser.add_argument(
+ 'property',
+ metavar='property_name',
+ help="""Name of property to extract using object notation.
+ Pass multiple values to drill down into nested objects (in order).""",
+ nargs='*',
+ )
+
+ parser.add_argument(
+ '-r', '--raw',
+ help="""Dumps the raw object found at the requested location.
+ If omitted, returns a JSON formatted object instead.""",
+ action='store_true',
+ default=False
+ )
+
+ return parser.parse_args()
+
+def main():
+ args = parse_args()
+
+ with open(args.file) as json_file:
+ selected_property = json.load(json_file)
+
+ for prop in args.property:
+ selected_property = selected_property[prop]
+
+ if args.raw:
+ print(selected_property)
+ else:
+ print(json.dumps(selected_property))
+
+ return 0
+
+if __name__ == "__main__":
+ sys.exit(main())