lib.PackageFilter: Add module

Add a package filter abstraction designed to replace the package
filter string tossed around various functions througout jw-pkg.

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2026-04-21 11:13:20 +02:00
commit 33ff46e7b3
Signed by: jan
GPG key ID: 3750640C9E25DD61

View file

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
import abc, re
from .Package import Package
class PackageFilter(abc.ABC):
@abc.abstractmethod
def _match(self, package: Package) -> bool:
raise NotImplementedError()
def match(self, package: Package) -> bool:
return self._match(package)
class PackageFilterString(PackageFilter):
def __init__(self, definition: str) -> None:
# -- Poor man's parsing for now
url_rx_str = re.sub(r'^\s*url\s*=~\s*', '', definition)
if url_rx_str == definition:
raise Exception(f'Unsupported filter string "{definition}"')
self.__definition = url_rx_str
def _match(self, package: Package) -> bool:
return re.search(self.__definition, package.url) is not None