From 62c2dd6e24f6ac0523fe7e1c16e1475b1988d61f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Wed, 4 Jan 2012 13:14:08 -0300 Subject: Add a thp_dest parameter to install package in custom locations --- lib/thandy/formats.py | 6 +++++- lib/thandy/packagesys/PackageSystem.py | 2 +- lib/thandy/packagesys/ThpPackages.py | 10 +++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/thandy/formats.py b/lib/thandy/formats.py index 0a73ff4..6253678 100644 --- a/lib/thandy/formats.py +++ b/lib/thandy/formats.py @@ -746,7 +746,7 @@ def makePackageObj(config_fname, package_fname): 'exe_registry_ent', 'db_key', 'db_val', 'command_install', 'command_remove', - 'thp_name', 'thp_version', + 'thp_name', 'thp_version', 'thp_dest' ], preload) f = open(package_fname, 'rb') @@ -790,6 +790,10 @@ def makePackageObj(config_fname, package_fname): if not r.get('thp_version'): raise thandy.FormatException("missing thp_version value") extra['thp_version'] = r['thp_version'] + if not r.get('thp_dest'): + extra['thp_dest'] = "" + else: + extra['thp_dest'] = r['thp_dest'] if r.get('command_install'): extra['install_type'] = 'command' diff --git a/lib/thandy/packagesys/PackageSystem.py b/lib/thandy/packagesys/PackageSystem.py index b2e66a1..36af2f2 100644 --- a/lib/thandy/packagesys/PackageSystem.py +++ b/lib/thandy/packagesys/PackageSystem.py @@ -110,7 +110,7 @@ def getInstaller(relPath, extra, defaultFormat, package): elif installType == 'thp': import thandy.packagesys.ThpPackages installer = thandy.packagesys.ThpPackages.ThpInstaller( - relPath) + relPath, extra['thp_dest']) else: return None diff --git a/lib/thandy/packagesys/ThpPackages.py b/lib/thandy/packagesys/ThpPackages.py index d90af0c..85a681b 100644 --- a/lib/thandy/packagesys/ThpPackages.py +++ b/lib/thandy/packagesys/ThpPackages.py @@ -213,9 +213,10 @@ class ThpTransaction(PS.Transaction): class ThpInstaller(PS.Installer): """ Represents an installer for an individual Thp package. """ - def __init__(self, relPath, db = None, repoRoot = None): + def __init__(self, relPath, db = None, repoRoot = None, dest = ""): PS.Installer.__init__(self, relPath) self._db = db + self._dest = dest self.setCacheRoot(repoRoot) if db is None: self._db = ThpDB() @@ -243,9 +244,12 @@ class ThpInstaller(PS.Installer): self._db.insert(pkg_metadata) self._db.statusInProgress(pkg_metadata) - dir = os.path.join(self._thp_root, self._pkg.get("package_name")) + if len(self._dest) == 0: + dir = os.path.join(self._thp_root, self._pkg.get("package_name")) + else: + dir = os.path.join(self._thp_root, self._dest) try: - os.mkdir(dir) + os.makedirs(dir) except: logging.info("%s: Already exists, using it." % dir) -- cgit v1.2.3