diff --git a/src/python/jw/pkg/lib/Distro.py b/src/python/jw/pkg/lib/Distro.py index 35cfe602..b2a3cc47 100644 --- a/src/python/jw/pkg/lib/Distro.py +++ b/src/python/jw/pkg/lib/Distro.py @@ -11,6 +11,7 @@ if TYPE_CHECKING: import abc, importlib, re +from .PackageFilter import PackageFilter from .ExecContext import ExecContext from .base import Result, InputMode from .Package import Package @@ -326,8 +327,16 @@ class Distro(abc.ABC): async def _select_by_name(self, names: Iterable[str]) -> Iterable[Package]: pass - async def select(self, names: Iterable[str] = []) -> Iterable[Package]: - return await self._select_by_name(names) + async def _select(self, names: Iterable[str], filter: PackageFilter) -> Iterable[Package]: + assert filter, "No filter in _select()" + return [p for p in await self._select_by_name(names) if filter.match(p)] + + async def select(self, names: Iterable[str] = [], filter: PackageFilter|None=None) -> Iterable[Package]: + if not filter: + filter = self.__default_pkg_filter + if not filter: + return await self._select_by_name(names) + return await self._select(names, filter) # -- install