From db29fd05848fdcd9846288fb4e3d17a938f6631f Mon Sep 17 00:00:00 2001 From: Robert Buchholz Date: Mon, 24 Mar 2008 22:57:29 +0100 Subject: Redesign *Info class structure. We now also index non-archive distfiles (with their metadata), and write the output to a file named $distfile.INDEX.mtime --- distfiles-indexer.py | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/distfiles-indexer.py b/distfiles-indexer.py index 0895fe0..7922313 100755 --- a/distfiles-indexer.py +++ b/distfiles-indexer.py @@ -38,17 +38,21 @@ class ArchiveInfo: def write_info(self, outfiledir): - outfilename = "%s.INDEX" % (self.basename) + outfilename = "%s.INDEX.%s" % (self.basename, self.mtime) + self.out_fd = open(outfilename, "w") + self.write_header() + header_end = self.out_fd.tell() try: - self.out_fd = open(outfilename, "w") - self.write_header() - self.write_content() - self.out_fd.close() - return outfilename + self.write_tar_content() except: - if outfilename: - os.remove(outfilename) - raise + self.out_fd.seek(header_end) + try: + self.write_zip_content() + except: + self.out_fd.seek(header_end) + self.out_fd.truncate() + self.out_fd.close() + def write_header(self): self.out_fd.write("File-dist-name: %s\n" % (self.basename)) @@ -71,8 +75,7 @@ class ArchiveInfo: distfile.close() -class TarInfo(ArchiveInfo): - def write_content(self): + def write_tar_content(self): tar = tarfile.TarFile.open(self.filename, 'r') file_info = tar.next() @@ -95,8 +98,7 @@ class TarInfo(ArchiveInfo): file_info = tar.next() tar.close() -class ZipInfo(ArchiveInfo): - def write_content(self): + def write_zip_content(self): zip = zipfile.ZipFile(self.filename, 'r') filecount = 0 @@ -146,18 +148,9 @@ def main(): if not infilename: print "Please specify a filename." else: - tar_finished = False - try: - t = TarInfo(infilename) - filename = t.write_info(outdir) - tar_finished = True - except: - pass - if tar_finished: - sys.exit(0) try: - t = ZipInfo(infilename) - filename = t.write_info(outdir) + a = ArchiveInfo(infilename) + filename = a.write_info(outdir) except: print infilename, " could not be opened" -- cgit v1.2.3-65-gdbad