repo.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import os
  2. import subprocess
  3. from .pkgbuild import PKGBUILD
  4. class Package(object):
  5. def __init__(self, config):
  6. self.config = config
  7. @property
  8. def name(self):
  9. return self.config["name"]
  10. @property
  11. def url(self):
  12. return self.config.get("url") or "https://aur.archlinux.org/{}.git".format(
  13. self.name)
  14. @property
  15. def path(self):
  16. return os.path.join(self.config.config.cachedir, self.name)
  17. @property
  18. def PKGBUILD(self):
  19. if not os.path.exists(self.path):
  20. subprocess.check_call(["git", "clone", self.url],
  21. cwd=self.config.config.cachedir)
  22. if not hasattr(self, '_PKGBUILD'):
  23. path = os.path.join(self.path, 'PKGBUILD')
  24. self._PKGBUILD = PKGBUILD(path)
  25. return self._PKGBUILD
  26. class Repo(object):
  27. def __init__(self, config):
  28. self.config = config
  29. self.packages = []
  30. for package in self.config["packages"]:
  31. if isinstance(package, str):
  32. self.packages.append(Package(dict(name=package)))
  33. else:
  34. self.packages.append(Package(package))
  35. @property
  36. def name(self):
  37. return self.config.name
  38. @property
  39. def id(self):
  40. return self.config.id