diff options
-rwxr-xr-x | distfiles-indexer.py | 41 |
1 files 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" |