import os import subprocess from .pkgbuild import PKGBUILD class Package(object): def __init__(self, config): self.config = config @property def name(self): return self.config["name"] @property def url(self): return self.config.get("url") or "https://aur.archlinux.org/{}.git".format( self.name) @property def path(self): return os.path.join(self.config.config.cachedir, self.name) @property def PKGBUILD(self): if not os.path.exists(self.path): subprocess.check_call(["git", "clone", self.url], cwd=self.config.config.cachedir) if not hasattr(self, '_PKGBUILD'): path = os.path.join(self.path, 'PKGBUILD') self._PKGBUILD = PKGBUILD(path) return self._PKGBUILD class Repo(object): def __init__(self, config): self.config = config self.packages = [] for package in self.config["packages"]: if isinstance(package, str): self.packages.append(Package(dict(name=package))) else: self.packages.append(Package(package)) @property def name(self): return self.config.name @property def id(self): return self.config.id