diff options
Diffstat (limited to 'src/lib/Server/Plugins/Pkgmgr.py')
-rw-r--r-- | src/lib/Server/Plugins/Pkgmgr.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/lib/Server/Plugins/Pkgmgr.py b/src/lib/Server/Plugins/Pkgmgr.py index 02e64db2e..338464523 100644 --- a/src/lib/Server/Plugins/Pkgmgr.py +++ b/src/lib/Server/Plugins/Pkgmgr.py @@ -26,16 +26,26 @@ class PackageEntry(XMLFileBacked): # most attribs will be set from pkg self.packages[pkg.get('name')]['url'] = "%s/%s" % (location.get('uri'), pkg.get('simplefile')) elif pkg.attrib.has_key("file"): - for ptype in self.splitters: - mdata = self.splitters[ptype].match(pkg.get('file')) + if self.splitters.has_key(pkg.get('type')): + mdata = self.splitters[pkg.get('type')].match(pkg.get('file')) if not mdata: + syslog(LOG_ERR, "Failed to match pkg %s" % pkg.get('file')) continue pkgname = mdata.group('name') self.packages[pkgname] = mdata.groupdict() self.packages[pkgname]['url'] = location.get('uri') + '/' + pkg.get('file') - self.packages[pkgname]['type'] = ptype - break - syslog(LOG_ERR, "Failed to match pkg %s" % pkg.get('file')) + else: + derived = [(ptype, self.splitters[ptype].match(pkg.get('file')).groupdict()) + for ptype in self.splitters if self.splitters[ptype].match(pkg.get('file'))] + if not derived: + syslog("Failed to match pkg %s" % pkg.get('file')) + else: + (ptype, mdata) = derived[0] + print mdata + pkgname = mdata['name'] + self.packages[pkgname] = mdata + self.packages[pkgname]['url'] = location.get('uri') + '/' + pkg.get('file') + self.packages[pkgname]['type'] = ptype else: self.packages[pkg.get('name')] = pkg.attrib |