#!/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