2016-05-14 23:30:19 +02:00
|
|
|
#!/usr/bin/env python
|
|
|
|
import sys
|
|
|
|
import subprocess
|
|
|
|
import os
|
2016-05-15 11:10:46 +02:00
|
|
|
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')
|
2016-05-15 14:57:00 +02:00
|
|
|
parser.add_argument('--rm', action='store_true')
|
|
|
|
parser.add_argument('--command', '-c', default='xonsh',
|
2016-05-15 11:10:46 +02:00
|
|
|
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,
|
2016-05-15 14:57:00 +02:00
|
|
|
ptk_version = args.ptk)
|
2016-05-15 11:10:46 +02:00
|
|
|
|
|
|
|
print('Building and running Xonsh')
|
|
|
|
print('Using python ', args.python)
|
|
|
|
print('Using prompt-toolkit ', args.ptk)
|
2016-05-14 23:30:19 +02:00
|
|
|
|
|
|
|
with open('./Dockerfile', 'w+') as f:
|
2016-05-15 11:10:46 +02:00
|
|
|
f.write(docker_script)
|
2016-05-14 23:30:19 +02:00
|
|
|
|
2016-05-15 14:57:00 +02:00
|
|
|
env_string = ' '.join(args.env)
|
|
|
|
|
2016-05-14 23:30:19 +02:00
|
|
|
subprocess.call(['docker', 'build', '-t' , 'xonsh', '.'])
|
|
|
|
os.remove('./Dockerfile')
|
|
|
|
|
2016-05-15 14:57:00 +02:00
|
|
|
run_args = ['docker', 'run', '-ti']
|
|
|
|
for e in args.env:
|
|
|
|
run_args += ['-e', e]
|
|
|
|
if args.rm:
|
|
|
|
run_args.append('--rm')
|
|
|
|
run_args += ['xonsh', args.command]
|
|
|
|
subprocess.call(run_args)
|