forked from xonsh/xonsh
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxonsh-in-docker.py
executable file
·54 lines (44 loc) · 1.48 KB
/
xonsh-in-docker.py
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
#!/usr/bin/env python3
import subprocess
import os
import argparse
program_description = """Build and run Xonsh in a fresh, controlled
environment using docker """
parser = argparse.ArgumentParser(description=program_description)
parser.add_argument('env', nargs='*', default=[], metavar='ENV=value')
parser.add_argument('--python', '-p', default='3.4', metavar='python_version')
parser.add_argument('--ptk', '-t', default='1.00', metavar='ptk_version')
parser.add_argument('--keep', action='store_true')
parser.add_argument('--build', action='store_true')
parser.add_argument('--command', '-c', default='xonsh',
metavar='command')
args = parser.parse_args()
docker_script = """
from python:{python_version}
RUN pip install --upgrade pip && pip install \\
ply \\
prompt-toolkit=={ptk_version} \\
pygments
RUN mkdir /xonsh
WORKDIR /xonsh
ADD ./ ./
RUN python setup.py install
""".format(
python_version=args.python,
ptk_version=args.ptk)
print('Building and running Xonsh')
print('Using python ', args.python)
print('Using prompt-toolkit ', args.ptk)
with open('./Dockerfile', 'w+') as f:
f.write(docker_script)
env_string = ' '.join(args.env)
subprocess.call(['docker', 'build', '-t', 'xonsh', '.'])
os.remove('./Dockerfile')
if not args.build:
run_args = ['docker', 'run', '-ti']
for e in args.env:
run_args += ['-e', e]
if not args.keep:
run_args.append('--rm')
run_args += ['xonsh', args.command]
subprocess.call(run_args)