xonsh/xonsh-in-docker.py

55 lines
1.5 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
2016-05-14 23:30:19 +02:00
import subprocess
import os
import argparse
2016-07-18 11:30:57 +02:00
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')
2016-07-18 11:30:57 +02:00
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(
2016-07-18 11:30:57 +02:00
python_version=args.python,
ptk_version=args.ptk)
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:
f.write(docker_script)
2016-05-14 23:30:19 +02:00
env_string = ' '.join(args.env)
2016-07-18 11:30:57 +02:00
subprocess.call(['docker', 'build', '-t', 'xonsh', '.'])
2016-05-14 23:30:19 +02:00
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)