Source code for toil.utils.toilMain

import os
import re
import sys
import textwrap
import types
from importlib.metadata import version as metadata_version
from typing import Any

from toil.version import version


[docs] def main() -> None: modules = loadModules() if len(sys.argv) < 2 or sys.argv[1] == "--help": printHelp(modules) sys.exit(0) cmd = sys.argv[1] if cmd == "--version": printVersion() sys.exit(0) try: module = modules[cmd] except KeyError: sys.stderr.write( f'Unknown option "{cmd}". Pass --help to display usage information.\n' ) sys.exit(1) del sys.argv[1] get_or_die(module, "main")()
[docs] def get_or_die(module: types.ModuleType, name: str) -> Any: """ Get an object from a module or complain that it is missing. """ if hasattr(module, name): return getattr(module, name) else: sys.stderr.write( f"Internal Toil error!\nToil utility module " f"{module.__name__} is missing required attribute {name}\n" ) sys.exit(1)
[docs] def loadModules() -> dict[str, types.ModuleType]: # noinspection PyUnresolvedReferences from toil.utils import toilClean # noqa from toil.utils import toilConfig # noqa from toil.utils import toilDebugFile # noqa from toil.utils import toilDebugJob # noqa from toil.utils import toilDestroyCluster # noqa from toil.utils import toilKill # noqa from toil.utils import toilLaunchCluster # noqa from toil.utils import toilRsyncCluster # noqa from toil.utils import toilServer # noqa from toil.utils import toilSshCluster # noqa from toil.utils import toilStats # noqa from toil.utils import toilStatus # noqa return { "-".join([i.lower() for i in re.findall("[A-Z][^A-Z]*", name)]): module for name, module in locals().items() }
[docs] def printHelp(modules: dict[str, types.ModuleType]) -> None: name = os.path.basename(sys.argv[0]) descriptions = "\n ".join( f'{cmd} - {get_or_die(mod, "__doc__").strip()}' for cmd, mod in modules.items() if mod ) print( textwrap.dedent( f""" Usage: {name} COMMAND ... {name} --help {name} COMMAND --help Where COMMAND is one of the following: {descriptions} """[ 1: ] ) )
[docs] def printVersion() -> None: try: detected_version = metadata_version("toil") if "a" in detected_version: # This probably means Toil is installed as development print(version) else: print(detected_version) except: print(f"Version gathered from toil.version: {version}")