cmds.distro.CmdSelect: Use select(filter)

Ditch the CmdSelect.filter_packages(), because Distro.select() now
supports filtering out of the box.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-04-20 17:28:32 +02:00
commit 1646aaeb59
Signed by: jan
GPG key ID: 3750640C9E25DD61

View file

@ -4,6 +4,7 @@ from argparse import Namespace, ArgumentParser
import re import re
from ...lib.Package import Package from ...lib.Package import Package
from ...lib.PackageFilter import PackageFilterString
from ..CmdDistro import CmdDistro from ..CmdDistro import CmdDistro
from .Cmd import Cmd from .Cmd import Cmd
@ -16,15 +17,7 @@ class CmdSelect(Cmd): # export
super().add_arguments(parser) super().add_arguments(parser)
parser.add_argument("filter", help="Package filter string") parser.add_argument("filter", help="Package filter string")
def filter_packages(self, filter: str, packages: list[Package]) -> list[Package]:
# -- Poor man's parsing for now
url_rx_str = re.sub(r'^\s*url\s*=~\s*', '', filter)
if url_rx_str == filter:
raise Exception(f'Unsupported filter string "{filter}"')
url_rx = re.compile(url_rx_str)
return [p for p in packages if re.search(url_rx, p.url) is not None]
async def _run(self, args: Namespace) -> None: async def _run(self, args: Namespace) -> None:
# TODO: Semantics probably change heavily in the future filter = PackageFilterString(args.filter) if args.filter else None
for p in self.filter_packages(args.filter, await self.distro.select()): for p in await self.distro.select(filter):
print(p.name) print(p.name)