Source code for pkgcore.config.domain
"""
base class to derive from for domain objects
Bit empty at the moment
"""
__all__ = ("MissingFile", "Failure", "domain")
from ..exceptions import PkgcoreException
from ..operations import domain as domain_ops
[docs]
class MissingFile(PkgcoreException):
"""Required file is missing."""
def __init__(self, filename, setting):
super().__init__(
f"setting {setting} points at {filename!r}, which doesn't exist."
)
self.file, self.setting = filename, setting
[docs]
class Failure(PkgcoreException):
"""Generic domain failure."""
def __init__(self, text):
super().__init__(f"domain failure: {text}")
self.text = text
# yes this is basically empty. will fill it out as the base is better
# identified.
[docs]
class domain:
fetcher = None
tmpdir = None
_triggers = ()
@property
def triggers(self):
return tuple(self._triggers)
[docs]
def get_pkg_operations(self, pkg, observer=None):
"""Get the manager of package operations for the given package
If you wish to modify a package- invoke setup, install, etc- this is what's responsible
for giving you a common interface despite the format implementation varying.
"""
domain = self.get_package_domain(pkg)
return pkg.operations(domain, observer=observer)
[docs]
def build_pkg(self, pkg, observer=None, failed=False, clean=True, **kwargs):
domain = self.get_package_domain(pkg)
return domain.get_pkg_operations(pkg, observer=observer).build(
observer=observer, failed=failed, clean=clean, **kwargs
)
[docs]
def install_pkg(self, newpkg, observer):
domain = self.get_package_domain(newpkg)
return domain_ops.install(
domain, domain.all_installed_repos, newpkg, observer, domain.root
)
[docs]
def uninstall_pkg(self, pkg, observer):
domain = self.get_package_domain(pkg)
return domain_ops.uninstall(
domain, domain.all_installed_repos, pkg, observer, domain.root
)
[docs]
def replace_pkg(self, oldpkg, newpkg, observer):
domain = self.get_package_domain(newpkg)
return domain_ops.replace(
domain, domain.all_installed_repos, oldpkg, newpkg, observer, domain.root
)