Avoid filename conflicts and cleanup files after
This commit is contained in:
parent
808066db94
commit
82eff621bf
21 changed files with 87 additions and 3 deletions
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.sh
|
echo "$1" > program.sh
|
||||||
bash program.sh
|
bash program.sh
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.c
|
echo "$1" > program.c
|
||||||
gcc program.c -o program && ./program
|
gcc program.c -o program && ./program
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.clj
|
echo "$1" > program.clj
|
||||||
clojure program.clj
|
clojure program.clj
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.cpp
|
echo "$1" > program.cpp
|
||||||
g++ program.cpp -o program && ./program
|
g++ program.cpp -o program && ./program
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
if [ "$EVAL_EXPR" = "true" ]; then
|
if [ "$EVAL_EXPR" = "true" ]; then
|
||||||
csharp -e "$1"
|
csharp -e "$1"
|
||||||
else
|
else
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.cs
|
echo "$1" > program.cs
|
||||||
csc program.cs >/dev/null && mono program.exe
|
csc program.cs >/dev/null && mono program.exe
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.exs
|
echo "$1" > program.exs
|
||||||
elixir program.exs
|
elixir program.exs
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.fs
|
echo "$1" > program.fs
|
||||||
fsharpc --optimize- program.fs >/dev/null && mono program.exe
|
fsharpc --optimize- program.fs >/dev/null && mono program.exe
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.go
|
echo "$1" > program.go
|
||||||
go run program.go
|
go run program.go
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
if [ "$EVAL_EXPR" = "true" ]; then
|
if [ "$EVAL_EXPR" = "true" ]; then
|
||||||
ghc -e "$1"
|
ghc -e "$1"
|
||||||
else
|
else
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.hs
|
echo "$1" > program.hs
|
||||||
ghc -O0 -j +RTS -A128m -n2m -RTS program.hs >/dev/null && ./program
|
ghc -O0 -j +RTS -A128m -n2m -RTS \
|
||||||
|
-no-keep-o-files -no-keep-hi-files \
|
||||||
|
program.hs >/dev/null \
|
||||||
|
&& ./program
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > Main.java
|
echo "$1" > Main.java
|
||||||
javac Main.java && java Main
|
javac Main.java && java Main
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.lua
|
echo "$1" > program.lua
|
||||||
lua5.3 program.lua
|
lua5.3 program.lua
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.ml
|
echo "$1" > program.ml
|
||||||
ocamlopt -cclib --static -o program program.ml && ./program
|
ocamlopt -cclib --static -o program program.ml && ./program
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.pas
|
echo "$1" > program.pas
|
||||||
|
|
||||||
# fpc does not use stderr, ld however does, capture both
|
# fpc does not use stderr, ld however does, capture both
|
||||||
|
@ -9,3 +11,5 @@ else
|
||||||
echo "$res"
|
echo "$res"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.pl
|
echo "$1" > program.pl
|
||||||
perl program.pl
|
perl program.pl
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.pl
|
echo "$1" > program.pl
|
||||||
swipl --quiet program.pl
|
swipl --quiet program.pl
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.py
|
echo "$1" > program.py
|
||||||
python program.py
|
python program.py
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.py
|
echo "$1" > program.py
|
||||||
python program.py
|
python program.py
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.rkt
|
echo "$1" > program.rkt
|
||||||
racket program.rkt
|
racket program.rkt
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.rb
|
echo "$1" > program.rb
|
||||||
ruby program.rb
|
ruby program.rb
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
mkdir "$COUNT" && cd "$COUNT"
|
||||||
|
|
||||||
echo "$1" > program.rs
|
echo "$1" > program.rs
|
||||||
rustc -C opt-level=0 --color never program.rs && ./program
|
rustc -C opt-level=0 --color never program.rs && ./program
|
||||||
|
|
||||||
|
cd .. && rm -rf "$COUNT"
|
||||||
|
|
|
@ -74,7 +74,7 @@ class LanguageHandler extends AkairoHandler {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await this.handleSpawn(proc);
|
await this.handleSpawn(proc);
|
||||||
this.containers.set(id, { name });
|
this.containers.set(id, { name, count: 0 });
|
||||||
return this.containers.get(id);
|
return this.containers.get(id);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw err;
|
throw err;
|
||||||
|
@ -83,9 +83,10 @@ class LanguageHandler extends AkairoHandler {
|
||||||
|
|
||||||
async evalCode({ language, code, options }) {
|
async evalCode({ language, code, options }) {
|
||||||
const { id = language.id, env = {} } = language.runWith(options);
|
const { id = language.id, env = {} } = language.runWith(options);
|
||||||
const { name } = await this.setupContainer(id);
|
const { name, count } = await this.setupContainer(id);
|
||||||
const proc = childProcess.spawn('docker', [
|
const proc = childProcess.spawn('docker', [
|
||||||
'exec',
|
'exec',
|
||||||
|
`-eCOUNT=${count}`,
|
||||||
...Object.entries(env).map(([k, v]) => `-e${k}=${v}`),
|
...Object.entries(env).map(([k, v]) => `-e${k}=${v}`),
|
||||||
name, '/bin/sh', '/var/run/run.sh', code
|
name, '/bin/sh', '/var/run/run.sh', code
|
||||||
]);
|
]);
|
||||||
|
|
Loading…
Reference in a new issue