xref: /src/contrib/llvm-project/lldb/bindings/python/createPythonInit.py (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
1cfca06d7SDimitry Andricimport os
2cfca06d7SDimitry Andricimport sys
3cfca06d7SDimitry Andric
4cfca06d7SDimitry AndricpkgRelDir = sys.argv[1]
5cfca06d7SDimitry AndricpkgFiles = sys.argv[2:]
6cfca06d7SDimitry Andric
7cfca06d7SDimitry AndricgetFileName = lambda f: os.path.splitext(os.path.basename(f))[0]
8b1c73532SDimitry AndricimportNames = ", ".join('"{}"'.format(getFileName(f)) for f in pkgFiles)
9cfca06d7SDimitry Andric
10cfca06d7SDimitry Andricscript = """__all__ = [{import_names}]
11cfca06d7SDimitry Andricfor x in __all__:
12cfca06d7SDimitry Andric  __import__('lldb.{pkg_name}.' + x)
13145449b1SDimitry Andric
14145449b1SDimitry Andricdef __lldb_init_module(debugger, internal_dict):
15145449b1SDimitry Andric  import lldb
16145449b1SDimitry Andric  for x in __all__:
17145449b1SDimitry Andric    submodule = getattr(lldb.{pkg_name}, x)
18145449b1SDimitry Andric    lldb_init = getattr(submodule, '__lldb_init_module', None)
19145449b1SDimitry Andric    if lldb_init:
20145449b1SDimitry Andric      lldb_init(debugger, internal_dict)
21b1c73532SDimitry Andric""".format(
22b1c73532SDimitry Andric    import_names=importNames, pkg_name=pkgRelDir.replace("/", ".")
23b1c73532SDimitry Andric)
24cfca06d7SDimitry Andric
25cfca06d7SDimitry AndricpkgIniFile = os.path.normpath(os.path.join(pkgRelDir, "__init__.py"))
26cfca06d7SDimitry Andricwith open(pkgIniFile, "w") as f:
27cfca06d7SDimitry Andric    f.write(script)
28