summaryrefslogtreecommitdiff
path: root/patchtracker/SourceArchive.py
diff options
context:
space:
mode:
Diffstat (limited to 'patchtracker/SourceArchive.py')
-rwxr-xr-xpatchtracker/SourceArchive.py65
1 files changed, 41 insertions, 24 deletions
diff --git a/patchtracker/SourceArchive.py b/patchtracker/SourceArchive.py
index 1f12001..a0aab1b 100755
--- a/patchtracker/SourceArchive.py
+++ b/patchtracker/SourceArchive.py
@@ -45,49 +45,66 @@ class Archive:
def __str__(self):
return "Archive rooted at "+self.root
-class SourcePackage:
- name = None
- format = None
- diffgz = None
- loc = None
- type = "Native"
- version = None
- # todo
- vcs = {}
+# XXX maybe there's a better place/way for this
+def getidx(letter):
+ name = str(letter)
+ if len(name) < 4 or name[0:3] != "lib":
+ return name[0]
+ else:
+ return name[0:4]
+class SourcePackage:
def __init__(self, info):
+ self.diffgz_name = None
+ self.diffgz_size = None
+ self.diffgz_md5sum = None
+ self.diffgz = None
+ self.type = "Native"
self.name = info['Package']
self.format = info['Format']
self.loc = info['Directory']
self.version = info['Version']
+ self.idx = getidx(self)
for f in info['Files']:
if fnmatch(f['name'], '*.diff.gz'):
- self.diffgz=f
+ self.diffgz_name=f['name']
+ self.diffgz_size=f['size']
+ self.diffgz_md5sum=f['md5sum']
self.type = "Debian-diff"
- def idx(self):
- name = str(self)
- if len(name) < 4 or name[0:3] != "lib":
- return name[0]
- else:
- return name[0:4]
-
def __str__(self):
return self.name
+class MasterIndex:
+ def __init__(self):
+ self.pkgcounts = {}
+
+ def add(self, name):
+ idx = getidx(name)
+ if not self.pkgcounts.has_key(idx):
+ self.pkgcounts[idx] = 1
+ else:
+ self.pkgcounts[idx] += 1
+
+ def indices(self):
+ for k,v in sorted(self.pkgcounts.iteritems()):
+ yield (k,v)
+
class SourcePackageIndex:
def __init__(self):
self.pkgs = {}
def ins(self, srcpkg, rel):
- idx = srcpkg.idx()
- if not self.pkgs.has_key(idx):
- self.pkgs[idx] = {}
- if not self.pkgs[idx].has_key(srcpkg.name):
- self.pkgs[idx][srcpkg.name] = {}
- if not self.pkgs[idx][srcpkg.name].has_key(rel):
- self.pkgs[idx][srcpkg.name][rel] = srcpkg
+ if not self.pkgs.has_key(srcpkg.idx):
+ self.pkgs[srcpkg.idx] = {}
+ if not self.pkgs[srcpkg.idx].has_key(srcpkg.name):
+ self.pkgs[srcpkg.idx][srcpkg.name] = {}
+ if not self.pkgs[srcpkg.idx][srcpkg.name].has_key(rel):
+ self.pkgs[srcpkg.idx][srcpkg.name][rel] = srcpkg
+
+ def getletter(self, letter):
+ return self.pkgs[getidx(letter)]
def indices(self):
for k,v in sorted(self.pkgs.iteritems()):