Add soongdbg json to print the json for a module
Makes it easier to figure out your jq.
Test: soongdbg json SystemUI | jq -r '.source_file + ":" + (.source_line | tostring) + ": " + .name'
Change-Id: I3c6eb7fcefa5a27101ea49ddf2dcf59ab24f804b
diff --git a/bin/soongdbg b/bin/soongdbg
index c091c97..024f0fd 100755
--- a/bin/soongdbg
+++ b/bin/soongdbg
@@ -311,6 +311,26 @@
print(m.id)
+class JsonCommand:
+ help = "Print metadata about modules in json format"
+
+ def args(self, parser):
+ module_selection_args(parser)
+ parser.add_argument("--list", action="store_true",
+ help="Print the results in a json list. If not set and multiple"
+ + " modules are matched, the output won't be valid json.")
+
+ def run(self, args):
+ modules = load_and_filter_modules(args)
+ if args.list:
+ json.dump([m for m in modules], sys.stdout, indent=4, default=lambda o: o.__dict__)
+ else:
+ for m in modules:
+ json.dump(m, sys.stdout, indent=4, default=lambda o: o.__dict__)
+ print()
+
+
+
class QueryCommand:
help = "Query details about modules"
@@ -332,6 +352,7 @@
"between": BetweenCommand(),
"deps": DepsCommand(),
"id": IdCommand(),
+ "json": JsonCommand(),
"query": QueryCommand(),
}