aboutsummaryrefslogtreecommitdiff
path: root/tools/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/config.py')
-rwxr-xr-xtools/config.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/tools/config.py b/tools/config.py
new file mode 100755
index 0000000..22defdd
--- /dev/null
+++ b/tools/config.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python3
+
+import argparse
+from Kconfiglib import kconfiglib
+
+def search(node, term):
+ while node:
+ if isinstance(node.item, kconfiglib.Symbol):
+ if node.item.name == term:
+ return node.item.str_value
+
+ if node.list:
+ r = search(node.list, term)
+ if r is not None:
+ return r
+
+ node = node.next
+
+def searchBug(node, term):
+ bugs = ""
+
+ while node:
+ if isinstance(node.item, kconfiglib.Symbol):
+ if node.item.name.startswith(term):
+ if bugs is not "":
+ bugs += ";"
+ bugs += node.item.name
+
+ if node.list:
+ r = searchBug(node.list, term)
+ if r is not None and r is not "":
+ if bugs is not "":
+ bugs += ";"
+ bugs += r
+
+ node = node.next
+ return bugs
+
+def main(args):
+ kconf = kconfiglib.Kconfig(args.kconfig)
+ if args.dotconfig is not None:
+ kconf.load_config(args.dotconfig)
+
+ i = ""
+ if args.setting.endswith("BUG"):
+ i = searchBug(kconf.top_node, args.setting)
+ else:
+ i = search(kconf.top_node, args.setting)
+
+ if i is not None:
+ print(i)
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+
+ parser.add_argument("--kconfig", metavar="Kconfig", nargs="?", default="Kconfig", help="Top-level Kconfig file (default: Kconfig)")
+
+ parser.add_argument("--dotconfig", metavar="dotconfig", nargs="?", help=".config")
+
+ parser.add_argument("setting", metavar="CONFIG_KEY", nargs="?", help="Top-level Kconfig file (default: Kconfig)")
+
+ args = parser.parse_args()
+ main(args)