Source code for toil.utils.toilMain

import os
import re
import sys
import textwrap
import types
from typing import Any, Dict

from importlib.metadata import version as metadata_version

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}')