1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#!/usr/bin/env python
"""Downloads required third-party modules."""
import os
import urllib2
import gzip
import tarfile
import tempfile
import shutil
import sys
from StringIO import StringIO
HERE = os.path.abspath(os.path.dirname(__file__))
LIB_DIR = os.path.join(HERE, 'lib')
PACKAGES = {
'http://pypi.python.org/packages/source/F/Flask/Flask-0.7.2.tar.gz':
[('Flask-0.7.2/flask', 'flask')],
'http://pypi.python.org/packages/source/W/Werkzeug/Werkzeug-0.6.2.tar.gz':
[('Werkzeug-0.6.2/werkzeug', 'werkzeug')],
'http://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.5.5.tar.gz':
[('Jinja2-2.5.5/jinja2/', 'jinja2')],
'http://pypi.python.org/packages/source/s/simplejson/simplejson-2.1.6.tar.gz':
[('simplejson-2.1.6/simplejson', 'simplejson')],
'http://pypi.python.org/packages/source/P/Pygments/Pygments-1.4.tar.gz':
[('Pygments-1.4/pygments', 'pygments')],
}
def fetch_all():
if not os.path.isdir(LIB_DIR):
os.makedirs(LIB_DIR)
for url, targets in PACKAGES.iteritems():
if not _missing_targets(targets):
continue
sys.stdout.write(url)
sys.stdout.flush()
fetch(url, targets)
sys.stdout.write(' done\n')
sys.stdout.flush()
def fetch(url, targets):
blob = urllib2.urlopen(url).read()
gz = gzip.GzipFile(fileobj=StringIO(blob))
tar = tarfile.TarFile(fileobj=gz)
tmpdir = tempfile.mkdtemp()
try:
tar.extractall(tmpdir)
for src, dest in targets:
dest = os.path.join(LIB_DIR, dest)
if os.path.isdir(dest):
shutil.rmtree(dest)
shutil.copytree(os.path.join(tmpdir, src), dest)
finally:
shutil.rmtree(tmpdir)
def _missing_targets(targets):
for _, dest in targets:
dest = os.path.join(LIB_DIR, dest)
if not os.path.isdir(dest):
return True
return False
def link_sqlparse():
if os.path.islink('sqlparse'):
return
elif os.path.exists('sqlparse'):
shutil.rmtree('sqlparse')
if hasattr(os, 'symlink'):
os.symlink('../../sqlparse', 'sqlparse')
else:
shutil.copytree(os.path.join(HERE, '../../sqlparse'),
'sqlparse')
if __name__ == '__main__':
fetch_all()
link_sqlparse()
|