diff --git a/test~coding~readingCppPrograms.fr/docker-compile-and-run b/test~coding~readingCppPrograms.fr/docker-compile-and-run new file mode 100755 index 0000000000000000000000000000000000000000..9b0aff8437ee68b942998fd76407f82de7e47334 --- /dev/null +++ b/test~coding~readingCppPrograms.fr/docker-compile-and-run @@ -0,0 +1,25 @@ +#!/bin/sh + + +usage () { + echo docker-compile-and-run [program.cpp] + echo + echo Compiles and executes a c++ program within a sandbox. + echo The standard input and output is passed down to the program. + echo The exit status is that of the compiler. +} + +if [ -n $1 ]; then + usage + exit 0 +fi + +ID=`sudo docker run -d crosbymichael/build-essential sleep 1000` +sudo docker exec -i $ID sh -c "cat > prog.cpp" < $1 + +if sudo docker exec $ID g++ prog.cpp; then + sudo docker exec -i $ID ./a.out +else + exit $? +fi +sudo docker rm -f $ID > /dev/null 2>&1