diff --git a/api/src/languages.js b/api/src/languages.js index 6ac2f14..b1c93d2 100644 --- a/api/src/languages.js +++ b/api/src/languages.js @@ -22,6 +22,8 @@ const languages = require('../../config/languages.json'); versions[language] = /\d+/.exec(lines[1])?.[0]; } else if (language === 'emacs') { versions[language] = /\d+\.\d+/.exec(lines[1])?.[0]; + } else if (language === 'clojure') { + versions[language] = /\d+\.\d+\.\d+\.\d+/.exec(lines[1])?.[0]; } else { versions[language] = /\d+\.\d+\.\d+/.exec(section)?.[0]; } diff --git a/config/languages.json b/config/languages.json index f62ea5c..e3c0c50 100644 --- a/config/languages.json +++ b/config/languages.json @@ -39,6 +39,13 @@ "c" ] }, + { + "name": "clojure", + "aliases": [ + "clojure", + "clj" + ] + }, { "name": "crystal", "aliases": [ @@ -136,6 +143,12 @@ "java" ] }, + { + "name": "lolcode", + "aliases": [ + "lolcode" + ] + }, { "name": "nim", "aliases": [ diff --git a/container/install_script.sh b/container/install_script.sh index c7cf270..3aaad05 100644 --- a/container/install_script.sh +++ b/container/install_script.sh @@ -284,7 +284,6 @@ MIX_ENV=prod mix escript.build --force echo 'export PATH=$PATH:/opt/05AB1E/05AB1E' >> /opt/.profile source /opt/.profile - # install prolog # final binary: /opt/swipl/swipl-/build/src/swipl cd /opt && mkdir swipl && cd swipl @@ -300,6 +299,27 @@ ninja echo "export PATH=\$PATH:/opt/swipl/$SUB_DIR/build/src" >> /opt/.profile source /opt/.profile +# install lolcode +# final binary: /opt/lolcode/bin/lci +cd /opt +git clone https://github.com/justinmeza/lci.git lolcode +cd lolcode +mkdir bin +cd bin +cmake .. +make +echo 'export PATH=$PATH:/opt/lolcode/bin' >> /opt/.profile +source /opt/.profile + +# install clojure +# final binary: /opt/clojure/bin/clojure +# get version: /opt/clojure/bin/clojure -version +cd /opt && mkdir clojure && cd clojure +curl -O https://download.clojure.org/install/linux-install-1.10.2.796.sh +chmod +x linux-install-1.10.2.796.sh +./linux-install-1.10.2.796.sh --prefix /opt/clojure +echo 'export PATH=$PATH:/opt/clojure/bin' >> /opt/.profile + # create runnable users and apply limits for i in {1..150}; do useradd -M runner$i diff --git a/lxc/executors/clojure b/lxc/executors/clojure new file mode 100644 index 0000000..f82f9e8 --- /dev/null +++ b/lxc/executors/clojure @@ -0,0 +1,4 @@ +#!/bin/bash + +cd /tmp/$1 +timeout -s KILL 10 xargs -a args.args -d '\n' clojure -Sdeps '{:mvn/local-repo "/opt/.m2/repository"}' -M code.code < stdin.stdin diff --git a/lxc/executors/deno b/lxc/executors/deno index 8ec4c14..85bdd93 100755 --- a/lxc/executors/deno +++ b/lxc/executors/deno @@ -1,4 +1,5 @@ #!/bin/bash cd /tmp/$1 -timeout -s KILL 3 xargs -a args.args -d '\n' NO_COLOR=true deno run code.code < stdin.stdin +export NO_COLOR=true +timeout -s KILL 3 xargs -a args.args -d '\n' deno run code.code < stdin.stdin diff --git a/lxc/executors/lolcode b/lxc/executors/lolcode new file mode 100644 index 0000000..15e7473 --- /dev/null +++ b/lxc/executors/lolcode @@ -0,0 +1,4 @@ +#!/bin/bash + +cd /tmp/$1 +timeout -s KILL 3 lci code.code < stdin.stdin diff --git a/lxc/tests/_run b/lxc/tests/_run index b166802..dbcc47b 100755 --- a/lxc/tests/_run +++ b/lxc/tests/_run @@ -6,6 +6,8 @@ echo -n 'testing bash = ' ../../cli/execute bash bash.sh echo -n 'testing c = ' ../../cli/execute c c.c +echo -n 'testing clojure = ' +../../cli/execute clojure clojure.clj echo -n 'testing cpp = ' ../../cli/execute cpp cpp.cpp echo -n 'testing crystal = ' @@ -34,6 +36,8 @@ echo -n 'testing julia = ' ../../cli/execute julia julia.jl echo -n 'testing kotlin = ' ../../cli/execute kotlin kotlin.kt +echo -n 'testing lolcode = ' +../../cli/execute lolcode lolcode.lol echo -n 'testing lisp = ' ../../cli/execute lisp lisp.cl echo -n 'testing nasm 32 bit = ' diff --git a/lxc/tests/clojure.clj b/lxc/tests/clojure.clj new file mode 100644 index 0000000..befe5c3 --- /dev/null +++ b/lxc/tests/clojure.clj @@ -0,0 +1,5 @@ +(ns clojure.examples.hello + (:gen-class)) +(defn hello-world [] + (println "good")) +(hello-world) diff --git a/lxc/tests/lolcode.lol b/lxc/tests/lolcode.lol new file mode 100644 index 0000000..eac51ad --- /dev/null +++ b/lxc/tests/lolcode.lol @@ -0,0 +1,4 @@ +HAI 1.2 + CAN HAS STDIO? + VISIBLE "good" +KTHXBYE diff --git a/lxc/util/versions b/lxc/util/versions index 6ff9d54..49ec747 100755 --- a/lxc/util/versions +++ b/lxc/util/versions @@ -21,6 +21,10 @@ echo 'cpp' lxc-attach --clear-env -n piston -- /bin/bash -l -c "g++ --version" echo '---' +echo 'clojure' +lxc-attach --clear-env -n piston -- /bin/bash -l -c "clojure -version" +echo '---' + echo 'crystal' lxc-attach --clear-env -n piston -- /bin/bash -l -c "crystal -v" echo '---' @@ -77,6 +81,10 @@ echo 'lisp' lxc-attach --clear-env -n piston -- /bin/bash -l -c "sbcl --version" echo '---' +echo 'lolcode' +lxc-attach --clear-env -n piston -- /bin/bash -l -c "lci --version" +echo '---' + echo 'lua' lxc-attach --clear-env -n piston -- /bin/bash -l -c "lua -v" echo '---' diff --git a/readme.md b/readme.md index ea4c0e9..3628d2a 100644 --- a/readme.md +++ b/readme.md @@ -260,6 +260,7 @@ Content-Type: application/json `brainfuck`, `c`, `cpp`, +`clojure`, `crystal`, `csharp`, `d`, @@ -275,6 +276,7 @@ Content-Type: application/json `julia`, `kotlin`, `lisp`, +`lolcode`, `lua`, `nasm`, `nasm64`,