diff --git a/aoc b/aoc index 71e351e..25e8e5e 100644 --- a/aoc +++ b/aoc @@ -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): diff --git a/runners/buildKotlin.sh b/runners/buildKotlin.sh new file mode 100644 index 0000000..d49ada7 --- /dev/null +++ b/runners/buildKotlin.sh @@ -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 diff --git a/runners/jar.sh b/runners/jar.sh new file mode 100644 index 0000000..857fab3 --- /dev/null +++ b/runners/jar.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -e + +java -jar $@ \ No newline at end of file diff --git a/templates/main.kt b/templates/main.kt new file mode 100644 index 0000000..095ee7a --- /dev/null +++ b/templates/main.kt @@ -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) { + 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) +} \ No newline at end of file