|
@@ -1,7 +1,37 @@
|
|
|
+import os
|
|
|
+import subprocess
|
|
|
+
|
|
|
+from .pkgbuild import PKGBUILD
|
|
|
+
|
|
|
+
|
|
|
class Package(object):
|
|
|
- def __init__(self, name, url=None):
|
|
|
- self.name = name
|
|
|
- self.url = url or "https://aur.archlinux.org/{}.git".format(name)
|
|
|
+ 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):
|
|
@@ -10,10 +40,10 @@ class Repo(object):
|
|
|
self.packages = []
|
|
|
for package in self.config["packages"]:
|
|
|
if isinstance(package, str):
|
|
|
- self.packages.append(Package(package))
|
|
|
+ self.packages.append(Package(dict(name=package)))
|
|
|
|
|
|
else:
|
|
|
- self.packages.append(Package(package["name"], package.get("url")))
|
|
|
+ self.packages.append(Package(package))
|
|
|
|
|
|
@property
|
|
|
def name(self):
|