diff --git a/src/python/jw/pkg/App.py b/src/python/jw/pkg/App.py index fe93c585..a9ab6eb6 100644 --- a/src/python/jw/pkg/App.py +++ b/src/python/jw/pkg/App.py @@ -21,7 +21,7 @@ if TYPE_CHECKING: import argparse from argparse import ArgumentParser - from typing import TypeAlias + from typing import Iterable, TypeAlias from .lib.PackageFilter import PackageFilter @@ -77,12 +77,17 @@ class App(Base): raise Exception('Tried to access undefined pretty top directory') return self.___pretty_topdir - def __proj_dir(self, name: str, pretty: bool) -> str | None: + def __proj_dir( + self, + name: str, + pretty: bool, + projs_roots: Iterable[str | None] | None = None, + ) -> str | None: if name == self.__top_name: if pretty: return self.__pretty_topdir return self.__topdir - for d in [self.__projs_root, self.___opt_root]: + for d in projs_roots or [self.__projs_root, self.___opt_root]: if d is None: continue ret = d + '/' + name @@ -99,6 +104,7 @@ class App(Base): search_subdirs: list[str] | None = None, search_absdirs: list[str] | None = None, pretty: bool = True, + projs_roots: Iterable[str | None] | None = None, ) -> str | None: if search_subdirs is None: search_subdirs = [] @@ -134,7 +140,7 @@ class App(Base): f'Tried to pretty-format directory {pd}, not implemented' ) - pd = self.__proj_dir(name, False) + pd = self.__proj_dir(name, pretty = False, projs_roots = projs_roots) if pd is None: return None if not search_subdirs and not search_absdirs: @@ -405,8 +411,9 @@ class App(Base): search_absdirs: list[str] | None = None, pretty: bool = True, throw: bool = False, + projs_roots: Iterable[str | None] | None = None, ) -> str | None: - ret = self.__find_dir(name, search_subdirs, search_absdirs, pretty) + ret = self.__find_dir(name, search_subdirs, search_absdirs, pretty, projs_roots) if ret is not None: return ret if not throw: