def debianism_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: # XXX: the same as devel for now package.set_flag(PackageFlags.DEVEL, debianism_flag)
def snapshot_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: # XXX: the same as ignored for now package.set_flag(PackageFlags.IGNORE, snapshot_flag)
def successor_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: # XXX: the same as devel for now package.set_flag(PackageFlags.DEVEL, successor_flag)
def remove_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.REMOVE, remove_flag)
def rolling_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.ROLLING, rolling_flag)
def altver_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.ALTVER, altver_flag)
def vulnerable_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.VULNERABLE, vulnerable_flag)
def outdated_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.OUTDATED, outdated_flag)
def legacy_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.LEGACY, legacy_flag)
def devel_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.DEVEL, devel_flag)
def any_is_patch_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.ANY_IS_PATCH, any_is_patch_flag)
def stable_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.STABLE, stable_flag)
def weak_devel_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: # XXX: currently sets ignore; change to set non-viral variant of devel (#654) package.set_flag(PackageFlags.IGNORE, weak_devel_flag)
def ignore_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.IGNORE, ignore_flag)
def generated_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: # XXX: the same as rolling for now package.set_flag(PackageFlags.ROLLING, generated_flag)
def incorrect_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.INCORRECT, incorrect_flag)
def trace_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.TRACE, trace_flag)
def untrusted_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.UNTRUSTED, untrusted_flag)
def altscheme_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.ALTSCHEME, altscheme_flag)
def noscheme_action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.NOSCHEME, noscheme_flag)
class PackageMaker(PackageMakerBase): _package: Package _ident: Optional[str] _itemno: int _skipfailed: bool def __init__(self, logger: Logger, ident: Optional[str], itemno: int, skipfailed: bool = False) -> None: super(PackageMaker, self).__init__(logger) self._package = Package() self._ident = ident self._itemno = itemno self._skipfailed = skipfailed def _get_ident(self) -> str: return self._ident or self._package.extrafields.get('origin', None) or self._package.name or self._package.basename or 'item #{}'.format(self._itemno) @PackageMakerBase._simple_setter('origin', str, nzs.strip, nzs.forbid_newlines) def set_origin(self, origin: str) -> None: # XXX: convert to dedicated field self.set_extra_field('origin', origin) @PackageMakerBase._simple_setter('name', str, nzs.strip, nzs.forbid_newlines) def set_name(self, name: str) -> None: self._package.name = name @PackageMakerBase._simple_setter('basename', str, nzs.strip, nzs.forbid_newlines) def set_basename(self, basename: str) -> None: self._package.basename = basename def prefix_name(self, prefix: str) -> None: self._package.name = prefix + self._package.name @PackageMakerBase._simple_setter('version', str, nzs.strip, nzs.forbid_newlines) def set_version(self, version: str, version_normalizer: Optional[Callable[[str], str]] = None) -> None: self._package.rawversion = version self._package.origversion = version if version_normalizer is None else version_normalizer(version) self._package.version = self._package.origversion @PackageMakerBase._simple_setter('version', str, nzs.strip, nzs.forbid_newlines) def set_rawversion(self, rawversion: str) -> None: if rawversion != self._package.version: self._package.rawversion = rawversion def set_name_and_version(self, namever: str, version_normalizer: Optional[Callable[[str], str]] = None) -> None: name, version = namever.rsplit('-', 1) self.set_name(name) self.set_version(version, version_normalizer) @PackageMakerBase._simple_setter('arch', str, nzs.strip, nzs.forbid_newlines) def set_arch(self, arch: str) -> None: self._package.arch = arch @PackageMakerBase._simple_setter('summary', str, nzs.strip) def set_summary(self, summary: str) -> None: self._package.comment = summary @PackageMakerBase._omnivorous_setter('maintainer', str, nzs.strip, nzs.forbid_newlines, nzs.tolower) def add_maintainers(self, *args: Any) -> None: self._package.maintainers.extend(_iter_unique(args, self._package.maintainers)) @PackageMakerBase._omnivorous_setter('category', str, nzs.strip, nzs.forbid_newlines) def add_categories(self, *args: Any) -> None: # XXX: convert into array if not self._package.category: self._package.category = args[0] @PackageMakerBase._omnivorous_setter('homepage', str, nzs.strip, nzs.url, nzs.warn_whitespace, nzs.forbid_newlines) def add_homepages(self, *args: Any) -> None: # XXX: convert into array if not self._package.homepage: self._package.homepage = args[0] @PackageMakerBase._omnivorous_setter('license', str, nzs.strip, nzs.forbid_newlines) def add_licenses(self, *args: Any) -> None: self._package.licenses.extend(args) @PackageMakerBase._omnivorous_setter('download', str, nzs.strip, nzs.url, nzs.warn_whitespace, nzs.forbid_newlines) def add_downloads(self, *args: Any) -> None: self._package.downloads.extend(_iter_unique(args, self._package.downloads)) def set_flags(self, mask: int, is_set: bool = True) -> None: self._package.set_flag(mask, is_set) def set_extra_field(self, key: str, value: str) -> None: self._package.extrafields[key] = value def unwrap(self) -> Package: return self._package def clone(self, ident: Optional[str] = None, append_ident: Optional[str] = None) -> 'PackageMaker': offspring_ident = self._ident if ident is not None: offspring_ident = ident elif append_ident is not None: offspring_ident = (offspring_ident or '') + append_ident offspring = PackageMaker(self._logger, offspring_ident, self._itemno) offspring._package = deepcopy(self._package) return offspring def check_sanity(self, require_name: bool = True, require_version: bool = True, verbose: bool = False) -> bool: if require_name and not self._package.name: if verbose: self.log('package with no name', severity=Logger.ERROR) return False if require_version and not self._package.version: if verbose: self.log('package with no version', severity=Logger.ERROR) return False return True def __getattr__(self, key: str) -> Any: return getattr(self._package, key) def __enter__(self) -> 'PackageMaker': return self def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> Optional[bool]: if exc_type: self.log('parsing failed ({}): {}: {}'.format( 'skipped' if self._skipfailed else 'fatal', exc_type.__name__, exc_value ), severity=Logger.ERROR) if self._skipfailed: return True return None
def action(package: Package, package_context: PackageContext, match_context: MatchContext) -> None: package.set_flag(PackageFlags.SINK, sink_flag)