from __future__ import annotations from ...App import Scope from .Cmd import Cmd, Parent from typing import TYPE_CHECKING if TYPE_CHECKING: from argparse import ArgumentParser, Namespace class CmdPythonpath(Cmd): # export def __init__(self, parent: Parent) -> None: super().__init__( parent, 'pythonpath', help = 'Generate PYTHONPATH for given modules' ) def add_arguments(self, parser: ArgumentParser) -> None: super().add_arguments(parser) parser.add_argument('module', help = 'Modules', nargs = '*') async def _run(self, args: Namespace) -> None: deps = self.app.get_project_refs( args.module, ['pkg.requires.jw'], ['run', 'build'], scope = Scope.Subtree, add_self = True, names_only = True, ) out = [] for m in deps: path = self.app.find_dir(m, ['src/python', 'tools/python']) if path is not None: out.append(path) if out: print(':'.join(out))