diff --git a/src/python/jw/pkg/cmds/projects/CmdPythonpath.py b/src/python/jw/pkg/cmds/projects/CmdPythonpath.py index 9ddd6463..1b02a83b 100644 --- a/src/python/jw/pkg/cmds/projects/CmdPythonpath.py +++ b/src/python/jw/pkg/cmds/projects/CmdPythonpath.py @@ -1,8 +1,9 @@ from __future__ import annotations +from typing import TYPE_CHECKING + from ...App import Scope from .Cmd import Cmd, Parent -from typing import TYPE_CHECKING if TYPE_CHECKING: from argparse import ArgumentParser, Namespace @@ -16,6 +17,25 @@ class CmdPythonpath(Cmd): # export def add_arguments(self, parser: ArgumentParser) -> None: super().add_arguments(parser) + parser.add_argument( + '--subdir', + action = 'append', + help = ( + 'Directories to look for relative to the ' + 'respective project root directory' + ), + default = ['src/python', 'tools/python'], + ) + parser.add_argument( + '--delimiter', + default = ':', + help = 'Delimiter between paths', + ) + parser.add_argument( + '--prefix', + help = 'Prefix to prepend before every path component', + dest = 'path_component_prefix', + ) parser.add_argument('module', help = 'Modules', nargs = '*') async def _run(self, args: Namespace) -> None: @@ -29,8 +49,10 @@ class CmdPythonpath(Cmd): # export ) out = [] for m in deps: - path = self.app.find_dir(m, ['src/python', 'tools/python']) + path = self.app.find_dir(m, args.subdir) if path is not None: + if args.path_component_prefix is not None: + path = f'{args.path_component_prefix}{path}' out.append(path) if out: - print(':'.join(out)) + print(args.delimiter.join(out))