diff options
Diffstat (limited to 'patchtracker')
-rwxr-xr-x | patchtracker/SourceArchive.py | 22 |
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 |