diff options
| author | KunoiSayami <[email protected]> | 2023-11-17 13:55:49 +0800 |
|---|---|---|
| committer | KunoiSayami <[email protected]> | 2023-11-17 13:55:49 +0800 |
| commit | 3eb6ed90365270c18e2a746ae0e849421c1805d1 (patch) | |
| tree | c9f3947af0849fea8c653d9d8c0eacfd13ff2775 /utils/aur/AURUtils/srcinfo.py | |
| parent | b070b9d828933eeb6466b7e575bd882b303fda5d (diff) | |
refactor: Remove utils from repository
Signed-off-by: KunoiSayami <[email protected]>
Diffstat (limited to 'utils/aur/AURUtils/srcinfo.py')
| -rw-r--r-- | utils/aur/AURUtils/srcinfo.py | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/utils/aur/AURUtils/srcinfo.py b/utils/aur/AURUtils/srcinfo.py deleted file mode 100644 index 34d2240..0000000 --- a/utils/aur/AURUtils/srcinfo.py +++ /dev/null @@ -1,97 +0,0 @@ -import re -from collections import defaultdict -from itertools import chain -from typing import Optional, Union - -from .errors import PackageNotFound -from .aur_deps import depends_strip - -key_value_pattern = re.compile(r'(?P<KEY>.+?)=(?P<VALUE>.+)') -multivalued_attrs = { - 'source', 'provides', 'conflicts', 'depends', 'replaces', 'optdepends', 'makedepends', 'checkdepends', - 'md5sums', 'sha1sums', 'sha224sums', 'sha256sums', 'sha384sums', 'sha512sums', 'arch' -} - - -class SRCINFO: - - def __init__(self, pkgbase: str, pkgbase_opt: dict, pkgs_opt: dict): - self.pkgbase = pkgbase - self.pkgbase_opt = pkgbase_opt - self.pkgs_opt = pkgs_opt - - @classmethod - def parse(cls, source: str): - pkgbase = None - pkgbase_opt = defaultdict(list) - pkgs_opt = {} - handler = None - for l in source.splitlines(): - m = key_value_pattern.search(l.strip()) - if m is None: - continue - key, value = m.group('KEY').strip(), m.group('VALUE').strip() - if key == 'pkgbase': - pkgbase = value - handler = pkgbase_opt - elif key == 'pkgname': - pkgs_opt[value] = defaultdict(list) - handler = pkgs_opt[value] - else: - if key in multivalued_attrs: - handler[key].append(value) - else: - handler[key] = value - return SRCINFO(pkgbase, pkgbase_opt, pkgs_opt) - - @property - def pkgs(self) -> dict: - return { - k: {i: self.get_pkg_opt(k, i) for i in chain(self.pkgbase_opt.keys(), v.keys())} - for k, v in self.pkgs_opt.items() - } - - @property - def pkgs_name(self) -> list: - return list(self.pkgs_opt.keys()) - - def _chain_pkg_opt(self, pkgname: str, opt: str) -> chain: - if pkgname not in self.pkgs_name: - raise PackageNotFound(f'{pkgname} not found in {self.pkgbase}') - return chain(self.pkgbase_opt.get(opt, []), self.pkgs_opt[pkgname].get(opt, [])) - - def _chain_opt(self, opt: str) -> chain: - return chain(self.pkgbase_opt.get(opt, []), *(i.get(opt, []) for i in self.pkgs_opt.values())) - - def get_pkg_opt(self, pkgname: str, opt: str) -> Union[list, str]: - if pkgname not in self.pkgs_name: - raise PackageNotFound(f'{pkgname} not found in {self.pkgbase}') - if opt in multivalued_attrs: - return list(self._chain_pkg_opt(pkgname, opt)) - return self.pkgbase_opt.get(opt) - - def get_opt(self, opt: str) -> Union[list, str]: - if opt in multivalued_attrs: - return list(self._chain_opt(opt)) - return self.pkgbase_opt.get(opt) - - @property - def depends(self) -> list[str]: - return list(map(depends_strip, self._chain_opt('depends'))) - - @property - def makedepends(self) -> list[str]: - return list(map(depends_strip, self._chain_opt('makedepends'))) - - @property - def optdepends(self) -> list[str]: - return list(self._chain_opt('optdepends')) - - @property - def version(self) -> tuple[Optional[str], str, str]: - return self.pkgbase_opt.get('epoch', None), \ - self.pkgbase_opt['pkgver'], self.pkgbase_opt['pkgrel'] - - def get_version(self) -> str: - epoch = f"{self.pkgbase_opt['epoch']}:" if self.pkgbase_opt.get('epoch') else '' - return f"{epoch}{self.pkgbase_opt['pkgver']}-{self.pkgbase_opt['pkgrel']}" |
