#!/usr/bin/env bash

#docker run --rm -it piston /usr/bin/python -V
#docker run --rm -it piston /usr/bin/python3 -V
#docker run --rm -it piston /usr/bin/ruby --version
#docker run --rm -it piston /usr/bin/nodejs --version

dir="$( cd "$( dirname "$0" )" && pwd )"

if [ -z "$1" ]; then
    echo "invalid args"
    exit
fi
if [ -z "$2" ]; then
    echo "invalid args"
    exit
fi

lang=$1
abs=$2
file=$(basename $abs)

bin=
case "$lang" in
"python2")
    bin=executor_python2
    ;;
"python" | "python3")
    bin=executor_python3
    ;;
"ruby")
    bin=ruby
    ;;
"javascript" | "js" | "node")
    bin=nodejs
    ;;
"c")
    bin=executor_c
    ;;
"cpp" | "c++")
    bin=executor_cpp
    ;;
*)
    echo "invalid language"
    exit
esac

docker run \
    -m 16m \
    --cpus=".5" \
    --rm \
    -v $abs:/$file \
    -v $dir/executors/python2:/executor_python2 \
    -v $dir/executors/python3:/executor_python3 \
    -v $dir/executors/c:/executor_c \
    -v $dir/executors/cpp:/executor_cpp \
    piston \
    timeout -s HUP 3 /$bin /$file $file 2>&1