# HG changeset patch # User Jeff Hammel # Date 1316396222 25200 # Node ID 4d3d0e1324f535b1512ace2199eaa7fc9b738562 # Parent 86f6f99e421b78b1e129983d02572e7632461bde flush out tarfile diff -r 86f6f99e421b -r 4d3d0e1324f5 fetch/main.py --- a/fetch/main.py Sun Sep 18 18:27:57 2011 -0700 +++ b/fetch/main.py Sun Sep 18 18:37:02 2011 -0700 @@ -8,6 +8,8 @@ import sys import optparse +__all__ = ['Fetcher', 'FileFetcher', 'main'] + class Fetcher(object): """abstract base class for resource fetchers""" @@ -21,8 +23,11 @@ def __call__(self, dest): raise NotImplementedError +### standard dispatchers - always available +import tarfile import urllib2 +from StringIO import StringIO class FileFetcher(Fetcher): """fetch a single file""" @@ -47,6 +52,14 @@ type = 'tar' + def __call__(self, dest): + assert os.path.isdir(dest) + buffer = StringIO() + buffer.write(self.download(self.url)) + buffer.seek(0) + tf = tarfile.open(mode='r', fileobj=buffer) + tf.extract(dest) + class HgFetcher(Fetcher): """checkout a mercurial repository"""