Mercurial > hg > periprocess
comparison INSTALL.py @ 0:d28351df9a8a
initial commit from http://k0s.org/hg/config/file/tip/python/example/process.py
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Wed, 30 Nov 2016 12:40:25 -0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:d28351df9a8a |
---|---|
1 #!/usr/bin/env python | |
2 | |
3 """ | |
4 installation script for periprocess | |
5 subprocess front-end that keeps buffers of stdout/stderr | |
6 """ | |
7 | |
8 import os | |
9 import sys | |
10 import urllib2 | |
11 import subprocess | |
12 try: | |
13 from subprocess import check_call as call | |
14 except: | |
15 from subprocess import call | |
16 | |
17 REPO='http://k0s.org/hg/periprocess' | |
18 DEST='periprocess' # name of the virtualenv | |
19 VIRTUALENV='https://raw.github.com/pypa/virtualenv/develop/virtualenv.py' | |
20 | |
21 def which(binary, path=os.environ['PATH']): | |
22 dirs = path.split(os.pathsep) | |
23 for dir in dirs: | |
24 if os.path.isfile(os.path.join(dir, fileName)): | |
25 return os.path.join(dir, fileName) | |
26 if os.path.isfile(os.path.join(dir, fileName + ".exe")): | |
27 return os.path.join(dir, fileName + ".exe") | |
28 | |
29 def main(args=sys.argv[1:]): | |
30 | |
31 # create a virtualenv | |
32 virtualenv = which('virtualenv') or which('virtualenv.py') | |
33 if virtualenv: | |
34 call([virtualenv, DEST]) | |
35 else: | |
36 process = subproces.Popen([sys.executable, '-', DEST], stdin=subprocess.PIPE) | |
37 process.communicate(stdin=urllib2.urlopen(VIRTUALENV).read()) | |
38 | |
39 # create a src directory | |
40 src = os.path.join(DEST, 'src') | |
41 os.mkdir(src) | |
42 | |
43 # clone the repository | |
44 call(['hg', 'clone', REPO], cwd=src) | |
45 | |
46 # find the virtualenv python | |
47 python = None | |
48 for path in (('bin', 'python'), ('Scripts', 'python.exe')): | |
49 _python = os.path.join(DEST, *path) | |
50 if os.path.exists(_python) | |
51 python = _python | |
52 break | |
53 else: | |
54 raise Exception("Python binary not found in %s" % DEST) | |
55 | |
56 # find the clone | |
57 filename = REPO.rstrip('/') | |
58 filename = filename.split('/')[-1] | |
59 clone = os.path.join(src, filename) | |
60 assert os.path.exists(clone), "Clone directory not found in %s" % src | |
61 | |
62 # ensure setup.py exists | |
63 assert os.path.exists(os.path.join(clone, 'setup.py')), 'setup.py not found in %s' % clone | |
64 | |
65 # install the package in develop mode | |
66 call([python 'setup.py', 'develop'], cwd=clone) | |
67 |