diff options
Diffstat (limited to 'lib/thandy/packagesys/ExePackages.py')
-rw-r--r-- | lib/thandy/packagesys/ExePackages.py | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/lib/thandy/packagesys/ExePackages.py b/lib/thandy/packagesys/ExePackages.py index 1688da3..4989f3a 100644 --- a/lib/thandy/packagesys/ExePackages.py +++ b/lib/thandy/packagesys/ExePackages.py @@ -1,15 +1,38 @@ # Copyright 2008 The Tor Project, Inc. See LICENSE for licensing information. +import subprocess + +import thandy.util import thandy.packagesys.PackageSystem as ps import thandy.packagesys.PackageDB as pdb class ExePackageSystem(pdb.DBBackedPackageSystem): + def __init__(self, repo): + self._repo = repo def getName(self): - return "executable" - - def packageHandleFromJSON(self, json): - raise NotImplemented() #XXXX???? + return "exe" + + def packageHandlesFromJSON(self, pkg): + if pkg['format'] != 'exe': + raise thandy.FormatException() + + handles = [] + for entry in pkg['files']: + if len(entry) < 3: + continue + rp, h, extra = entry[:3] + version = package['version'] + + handles.append( + ExePackageHandle(self.getDB(), + package['name'], + version, + [], # filelist not implemented in this. + rp, + self._repo.getFilename(rp), + extra['exe_args'])) + return handles def canBeAutomatic(self): return True @@ -18,12 +41,16 @@ class ExePackageSystem(pdb.DBBackedPackageSystem): return True class ExePackageHandle(pdb.DBBackedPackageHandle): - def __init__(self, packageDB, name, version, filelist, filename, + def __init__(self, packageDB, name, version, filelist, relpath, filename, arguments): pdb.DBBackedPackageHandle.__init__(packageDB, name, version, filelist) + self._relPath = relpath self._filename = filename self._arguments = arguments + def getRelativePath(self): + return self._relPath + def _doInstall(self): commandline = [ self._filename ] + self._arguments logging.info("Installing %s. Command line: %s", self._filename, |