summaryrefslogtreecommitdiffstats
path: root/feed/sse_tar.py
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-11-21 16:39:26 +0000
committerLennart Poettering <lennart@poettering.net>2005-11-21 16:39:26 +0000
commit86b5e7777f80fdd8f2556105e6b9c3126316dfd3 (patch)
treee1caecc52703d4d93714f8c16e88a2a0c66fe195 /feed/sse_tar.py
parent118623476f8609c40425d751f56e44d720e3d6ff (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-xfeed/sse_tar.py66
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])
+
+