From aeda95a2157086b844a89d9c8e46b77a393870fb Mon Sep 17 00:00:00 2001
From: Thomas <git@hexf.me>
Date: Sat, 24 Apr 2021 17:59:06 +1200
Subject: [PATCH 01/14] add .code extension to files without file names

---
 api/src/executor/job.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/api/src/executor/job.js b/api/src/executor/job.js
index c0cd1a6..f7adec2 100644
--- a/api/src/executor/job.js
+++ b/api/src/executor/job.js
@@ -21,7 +21,7 @@ class Job {
         this.uuid =  uuidv4();
         this.runtime = runtime;
         this.files = files.map((file,i) => ({
-            name: file.name || `file${i}`,
+            name: file.name || `file${i}.code`,
             content: file.content
         }));
         

From c6e78fa0730cfb2dfdcc6268892745ca40a68424 Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 19:35:14 +1200
Subject: [PATCH 02/14] test script

---
 packages/test.sh | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
 create mode 100755 packages/test.sh

diff --git a/packages/test.sh b/packages/test.sh
new file mode 100755
index 0000000..9f30237
--- /dev/null
+++ b/packages/test.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+AUTH_HEADER="Authorization: $API_KEY"
+
+for test_file in */*/test.*
+do
+	IFS='/' read -ra test_parts <<< "$test_file"
+	language=${test_parts[0]}
+	lang_ver=${test_parts[1]}
+
+	test_src=$(python3 -c "import json; print(json.dumps(open('$test_file').read()))")
+
+	json='{"language":"'$language'","version":"'$lang_ver'","files":[{"content":'$test_src'}]}'
+	
+	result=$(curl -s -XPOST -H "Content-Type: application/json" -d "$json" https://emkc.org/api/v2/piston/execute -H $AUTH_HEADER)
+
+	echo "==$test_file: $language-$lang_ver=="
+	#jq '.'  <<<"$result"
+	jq -r '.compile.output + .run.output' <<<$result
+done

From f72c51d614857cefa739bff3466d79c24b91f124 Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 19:44:50 +1200
Subject: [PATCH 03/14] dotnet add cs extension

---
 packages/dotnet/5.0.201/compile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/packages/dotnet/5.0.201/compile b/packages/dotnet/5.0.201/compile
index 1500acb..8bfcc27 100644
--- a/packages/dotnet/5.0.201/compile
+++ b/packages/dotnet/5.0.201/compile
@@ -3,10 +3,13 @@
 export DOTNET_CLI_HOME=$PWD
 export HOME=$PWD
 
+rename 's/$/\.cs/' "$@" # Add .cs extension
+
 dotnet build --help > /dev/null # Shut the thing up
 
 dotnet new console -o . --no-restore
 rm Program.cs
 
+
 dotnet restore --source $DOTNET_ROOT/.nuget/packages
 dotnet build --no-restore
\ No newline at end of file

From dfdf8ce76e396790b6f399011fe898cfecf407b6 Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 19:46:36 +1200
Subject: [PATCH 04/14] gcc add extensions

---
 packages/gcc/10.2.0/compile | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/packages/gcc/10.2.0/compile b/packages/gcc/10.2.0/compile
index acc9ae4..8ef8ec5 100644
--- a/packages/gcc/10.2.0/compile
+++ b/packages/gcc/10.2.0/compile
@@ -5,16 +5,16 @@
 
 case "${PISTON_ALIAS}" in
     gcc | c)
-        gcc -std=c11 "$@" -lm
+        rename 's/$/\.c/' "$@" # Add .c extension
+        gcc -std=c11 *.c -lm
         ;;
     g++ | c++ | cpp)
-        g++ -std=c++17 "$@"
-        ;;
-    gccgo | go)
-        gccgo "$@"
+        rename 's/$/\.cpp/' "$@" # Add .cpp extension
+        g++ -std=c++17 *.cpp
         ;;
     gdc | d)
-        gdc "$@"
+        rename 's/$/\.d/' "$@" # Add .d extension
+        gdc *.d
         ;;
     *)
         echo "How did you get here? (${PISTON_ALIAS})"

From d851515f37617de66840c54a807341628693a727 Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 19:51:33 +1200
Subject: [PATCH 05/14] api: install rename in container

---
 api/Dockerfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/api/Dockerfile b/api/Dockerfile
index 40ecb71..72eb257 100644
--- a/api/Dockerfile
+++ b/api/Dockerfile
@@ -10,7 +10,7 @@ RUN for i in $(seq 1001 1500); do \
 RUN apt-get update && \
     apt-get install -y libxml2 gnupg tar coreutils util-linux libc6-dev \
     binutils build-essential locales libpcre3-dev libevent-dev libgmp3-dev \
-    libncurses6 libncurses5 libedit-dev libseccomp-dev && \
+    libncurses6 libncurses5 libedit-dev libseccomp-dev rename && \
     rm -rf /var/lib/apt/lists/*
 
 RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen

From 594ee7d436426d2d0bae3693fc5fd3ec4dc8a83b Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 20:08:42 +1200
Subject: [PATCH 06/14] zig extension

---
 packages/zig/0.7.1/compile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/packages/zig/0.7.1/compile b/packages/zig/0.7.1/compile
index af7e9eb..b666371 100644
--- a/packages/zig/0.7.1/compile
+++ b/packages/zig/0.7.1/compile
@@ -1,4 +1,6 @@
 #!/usr/bin/env bash
 
 # optimizing for small programs
-zig build-exe -O ReleaseSmall --color off --cache-dir . --global-cache-dir . --name out "$@"
+rename 's/$/\.zig/' "$@" # Add .zig extension
+
+zig build-exe -O ReleaseSmall --color off --cache-dir . --global-cache-dir . --name out *.zig

From ecfdfa52de2983381b97684dba90ebad0af950d5 Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 20:08:48 +1200
Subject: [PATCH 07/14] vlang extension

---
 packages/vlang/0.1.13/run | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/packages/vlang/0.1.13/run b/packages/vlang/0.1.13/run
index d8fa7b2..18b6c05 100644
--- a/packages/vlang/0.1.13/run
+++ b/packages/vlang/0.1.13/run
@@ -5,4 +5,9 @@ export VMODULES="$PWD"
 export TMPDIR="$PWD"
 
 # Put instructions to run the runtime
-v run "$@"
\ No newline at end of file
+
+rename 's/$/\.v/' "$@" # Add .v extension
+
+filename=$1.v
+shift
+v run $filename "$@"
\ No newline at end of file

From 8923fbd5cfdb4e7fc1e9e3cdbdbc75d03be98c22 Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 20:09:17 +1200
Subject: [PATCH 08/14] typescript  extension

---
 packages/typescript/4.2.3/compile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/packages/typescript/4.2.3/compile b/packages/typescript/4.2.3/compile
index fdf5f19..d674bb0 100644
--- a/packages/typescript/4.2.3/compile
+++ b/packages/typescript/4.2.3/compile
@@ -2,4 +2,6 @@
 
 # Put instructions to compile source code, remove this file if the language does not require this stage
 
-tsc "$@"
\ No newline at end of file
+rename 's/$/\.ts/' "$@" # Add .ts extension
+
+tsc *.ts
\ No newline at end of file

From ceb902349f0ed3366336f688cd015a55d4749a47 Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 20:09:25 +1200
Subject: [PATCH 09/14] scala extension

---
 packages/scala/3.0.0/run | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/scala/3.0.0/run b/packages/scala/3.0.0/run
index e8bd3c2..f8ff8a1 100644
--- a/packages/scala/3.0.0/run
+++ b/packages/scala/3.0.0/run
@@ -1,4 +1,4 @@
 #!/usr/bin/env bash
 
 # Put instructions to run the runtime
-scala -color never "$@"
+scala "$@"

From af91e66d64c955021ef692031c4f04412948729a Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 20:09:33 +1200
Subject: [PATCH 10/14] haskell extension

---
 packages/haskell/9.0.1/compile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/packages/haskell/9.0.1/compile b/packages/haskell/9.0.1/compile
index 2dd42e9..18e268b 100644
--- a/packages/haskell/9.0.1/compile
+++ b/packages/haskell/9.0.1/compile
@@ -1,5 +1,6 @@
 #!/usr/bin/env bash
 
 # Compile haskell file(s)
-ghc -dynamic -v0 -o out "$@"
+rename 's/$/\.hs/' "$@" # Add .hs extension
+ghc -dynamic -v0 -o out *.hs
 chmod +x out

From d2c36d8a547ff50f45bdcd7cf10a5741cadd499b Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 20:09:39 +1200
Subject: [PATCH 11/14] java extension

---
 packages/java/15.0.2/run | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/packages/java/15.0.2/run b/packages/java/15.0.2/run
index 0837ba4..505e4e4 100644
--- a/packages/java/15.0.2/run
+++ b/packages/java/15.0.2/run
@@ -1,4 +1,7 @@
 #!/usr/bin/env bash
 
 # Put instructions to run the runtime
-java "$@"
+mv $1 $1.java
+filename=$1.java
+shift
+java $filename "$@"

From a1209cdfd54e317b57b8920a862f946bdce48e36 Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 20:09:51 +1200
Subject: [PATCH 12/14] kotlin extension

---
 packages/kotlin/1.4.31/compile | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/packages/kotlin/1.4.31/compile b/packages/kotlin/1.4.31/compile
index d042c39..027ade0 100644
--- a/packages/kotlin/1.4.31/compile
+++ b/packages/kotlin/1.4.31/compile
@@ -1,4 +1,7 @@
 #!/usr/bin/env bash
 
 # Put instructions to compile source code, remove this file if the language does not require this stage
-kotlinc "$@" -include-runtime -d code.jar
\ No newline at end of file
+
+rename 's/$/\.kt/' "$@" # Add .kt extension
+
+kotlinc *.kt -include-runtime -d code.jar
\ No newline at end of file

From 5e9b9c888ebf19a0eaa849870ca9f78cee1d108f Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 20:09:59 +1200
Subject: [PATCH 13/14] ocaml extension

---
 packages/ocaml/4.12.0/compile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/packages/ocaml/4.12.0/compile b/packages/ocaml/4.12.0/compile
index c1d3e6a..39ddd0b 100644
--- a/packages/ocaml/4.12.0/compile
+++ b/packages/ocaml/4.12.0/compile
@@ -1,3 +1,5 @@
 #!/bin/bash
 
-ocamlc -o out "$@"
+rename 's/$/\.ml/' "$@" # Add .ml extension
+
+ocamlc -o out *.ml

From 03c64cfecfc45650b71eba1ad75523dd2143c219 Mon Sep 17 00:00:00 2001
From: Thomas Hobson <git@hexf.me>
Date: Sat, 24 Apr 2021 20:10:07 +1200
Subject: [PATCH 14/14] ponylang extension

---
 packages/ponylang/0.39.0/compile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/packages/ponylang/0.39.0/compile b/packages/ponylang/0.39.0/compile
index a412613..b0538df 100644
--- a/packages/ponylang/0.39.0/compile
+++ b/packages/ponylang/0.39.0/compile
@@ -1,4 +1,5 @@
 #!/usr/bin/env bash
 
 # Compile pony file(s)
+rename 's/$/\.pong/' "$@" # Add .pony extension
 ponyc -b out
\ No newline at end of file