Add Kotlin support

This commit is contained in:
akp 2024-12-07 02:05:09 +00:00
parent bfa03d6369
commit 1944623f5e
No known key found for this signature in database
GPG key ID: CF8D58F3DEB20755
4 changed files with 57 additions and 6 deletions

17
aoc
View file

@ -19,6 +19,7 @@ SAMPLE_TEST_JSON = "{}"
RUNNERS = {
"py": (None, ["./runners/py.sh"]),
"go": (["./runners/buildGo.sh"], None),
"kt": (["./runners/buildKotlin.sh"], ["./runners/jar.sh"]),
}
@ -167,11 +168,11 @@ def get_runner_command(
print(f"No build or run command specified for runner {file_extension}")
raise SystemExit(1)
if runner_run is not None and runner_build is not None:
print(
f"Build command and run command specified for {file_extension} - cannot determine path forwards."
)
raise SystemExit(1)
# if runner_run is not None and runner_build is not None:
# print(
# f"Build command and run command specified for {file_extension} - cannot determine path forwards."
# )
# raise SystemExit(1)
command = runner_build + [file_name]
set_terminal_colour("grey")
@ -182,7 +183,11 @@ def get_runner_command(
print(f"Failed to build: `{command}` returned exit code {exit_code}")
raise SystemExit(1)
fpstr = fpath.decode().strip()
return [fpstr], lambda: os.unlink(fpstr)
if runner_run is None:
return [fpstr], lambda: os.unlink(fpstr)
return runner_run + [fpstr], lambda: os.unlink(fpstr)
class CLI(object):

9
runners/buildKotlin.sh Normal file
View file

@ -0,0 +1,9 @@
#!/usr/bin/env bash
set -e
TEMPDIR="$(mktemp -d)"
FNAME=$(basename $1 | sed 's/\.kt$/.jar/')
FULLPATH="$TEMPDIR/$FNAME"
kotlinc "$1" -include-runtime -d "$FULLPATH"
echo $FULLPATH

5
runners/jar.sh Normal file
View file

@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -e
java -jar $@

32
templates/main.kt Normal file
View file

@ -0,0 +1,32 @@
import java.lang.System
import kotlin.system.*
import kotlin.sequences.generateSequence
fun parse(instr: String) {
}
fun one(instr: String): Int {
return 0
}
fun two(instr: String): Int {
return 0
}
fun main(args: Array<String>) {
if (args.size < 1 || !(args[0] == "1" || args[0] == "2")) {
debug("Missing or invalid day argument")
exitProcess(1)
}
val inp = generateSequence(::readLine).joinToString("\n")
if (args[0] == "1") {
println("${one(inp)}")
} else {
println("${two(inp)}")
}
}
fun debug(msg: String) {
System.err.println(msg)
}