summaryrefslogtreecommitdiff
path: root/patchtracker
diff options
context:
space:
mode:
Diffstat (limited to 'patchtracker')
-rwxr-xr-xpatchtracker/SourceArchive.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/patchtracker/SourceArchive.py b/patchtracker/SourceArchive.py
index abeabbb..5afcd10 100755
--- a/patchtracker/SourceArchive.py
+++ b/patchtracker/SourceArchive.py
@@ -15,9 +15,16 @@ class Archive:
self.root = dir
self.distsdir = os.sep.join([dir, "dists"])
- def suites(self):
+ def suites(self, filter=None):
for s in os.listdir(self.distsdir):
- yield s
+ if not filter:
+ yield s
+ else:
+ try:
+ filter.index(s)
+ yield s
+ except:
+ pass
def components(self, suite):
f = file(self.distsdir + os.sep + os.sep.join([suite, "Release"]))
@@ -25,10 +32,17 @@ class Archive:
for comp in rel['Components'].split(' '):
yield comp
- def sourcepackages(self, suite, component):
+ def sourcepackages(self, suite, component, filter=None):
sfile=os.sep.join([self.distsdir,suite,component,"/source/Sources.gz"])
for ent in deb822.Sources.iter_paragraphs(GzipFile(sfile)):
- yield SourcePackage(ent)
+ if not filter:
+ yield SourcePackage(ent)
+ else:
+ try:
+ filter.index(ent['Package'])
+ yield SourcePackage(ent)
+ except:
+ pass
def __str__(self):
return "Archive rooted at "+self.root