#!/usr/bin/env python

import argparse
import distutils.spawn
import os
import subprocess
import sys

def main():

    # parse command-line arguments
    parser = argparse.ArgumentParser()
    parser.add_argument("directory", nargs="?", default=os.getcwd())
    args = vars(parser.parse_args())

    # check for docker
    if not distutils.spawn.find_executable("docker"):
        parser.error("docker not installed")

    # ensure directory exists
    directory = os.path.realpath(args["directory"])
    if not os.path.isdir(directory):
        parser.error("{}: no such directory".format(args["directory"]))

    # update image
    subprocess.call(["docker", "pull", "cs50/cli"])

    # mount directory in CS50 CLI
    subprocess.call([
        "docker", "run",
            "--interactive",
            "--publish-all",
            "--rm",
            "--security-opt", "seccomp=unconfined", # http://stackoverflow.com/questions/35860527/warning-error-disabling-address-space-randomization-operation-not-permitted#comment62818827_35860527
            "--tty",
            "--volume", directory + ":/root",
            "--workdir", "/root",
            "cs50/cli"
            ])

if __name__ == "__main__":
    main()
