#!/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)