1#!/usr/bin/env python3 2# ./dev --help 3 4import argparse 5import os 6from subprocess import run 7import sys 8 9parser = argparse.ArgumentParser(prog='./dev') 10subparsers = parser.add_subparsers(metavar='<command>', title='commands') 11command = [ 12 'docker', 'run', '-it', '--rm', '-v', os.getcwd() + ':/src:cached', 13 '-w=/src', 'rust:1.31.0' 14] 15 16def cargo(args, remaining): 17 sys.exit(run(command + ['cargo'] + remaining or []).returncode) 18 19parser_cargo = subparsers.add_parser('cargo', help='run a cargo command') 20parser_cargo.set_defaults(func=cargo) 21 22def sh(args, remaining): 23 sys.exit(run(command + ['bash']).returncode) 24 25parser_sh = subparsers.add_parser('sh', help='bring up a shell') 26parser_sh.set_defaults(func=sh) 27 28def test(args, remaining): 29 sys.exit(run(command + ['cargo', 'test']).returncode) 30 31parser_test = subparsers.add_parser('test', help='run tests') 32parser_test.set_defaults(func=test) 33 34if len(sys.argv) > 1: 35 args, remaining = parser.parse_known_args() 36 try: 37 args.func(args, remaining) 38 except FileNotFoundError: 39 sys.exit('Please install Docker.') 40else: 41 parser.print_help() 42