diff options
author | Lennart Poettering <lennart@poettering.net> | 2005-11-21 16:39:26 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2005-11-21 16:39:26 +0000 |
commit | 86b5e7777f80fdd8f2556105e6b9c3126316dfd3 (patch) | |
tree | e1caecc52703d4d93714f8c16e88a2a0c66fe195 /feed/sse_tar.py | |
parent | 118623476f8609c40425d751f56e44d720e3d6ff (diff) |
change dashes to underscores
git-svn-id: file:///home/lennart/svn/public/sse/trunk@12 5fbabb74-0606-0410-a5e4-b5cc6a42724e
Diffstat (limited to 'feed/sse_tar.py')
-rwxr-xr-x | feed/sse_tar.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/feed/sse_tar.py b/feed/sse_tar.py new file mode 100755 index 0000000..79671f6 --- /dev/null +++ b/feed/sse_tar.py @@ -0,0 +1,66 @@ +#!/usr/bin/python + +import tarfile, zipfile, sys, os +import sse_feed + +def archive_uncompress(archive, root, meta = {}): + + f = tarfile.open(archive, "r") + + while True: + + i = f.next() + + if i is None: + break + + if not i.isreg(): + continue + + if not sse_feed.supported_source(i.name): + continue + + dst = os.path.join(root, i.name) + f.extract(i, dst) + os.utime(dst, (i.mtime, i.mtime)) + + sse_feed.process_source(archive, root, i.name, meta) + + del f + +def calc_md(fn): + m = md5.new() + f = fopen(fn) + + while True: + data = m.read(1024) + + if len(data) <= 0: + break + + m.update(data) + + del f + + return m.hexdigest() + + +def process_archive(archive, meta = {}): + + md = calc_md(archive) + root = os.path.join(HOME, "sources", md) + + try: + os.mkdir(root) + except: + pass + + meta["md"] = md + + archive_uncompress(archive, root, meta) + +if __name__ == "__main__": + + archive_uncompress(sys.argv[1]) + + |