feat: parallelise compilation of multiple files given to cli

This commit is contained in:
Jonny
2025-02-28 19:36:22 +00:00
parent d56be9249a
commit d214723f35

View File

@@ -16,11 +16,6 @@ import com.monovore.decline.Argument
import assemblyIR as asm import assemblyIR as asm
case class CliConfig(
file: File = new File(".")
)
given Argument[File] = Argument.from("file") { str => given Argument[File] = Argument.from("file") { str =>
val file = File(str) val file = File(str)
( (
@@ -94,11 +89,14 @@ object Main
version = "1.0" version = "1.0"
) { ) {
def main: Opts[IO[ExitCode]] = def main: Opts[IO[ExitCode]] =
Opts.argument[File]("file").map { file => Opts.arguments[File]("files").map { files =>
files
.parTraverse_ { file =>
compile( compile(
file.getAbsolutePath, file.getAbsolutePath,
outFile = Some(File(".", file.getName.stripSuffix(".wacc") + ".s")) outFile = Some(File(".", file.getName.stripSuffix(".wacc") + ".s"))
).map(ExitCode(_)) // turn the int into exit code for compatibility with commandioapp )
// https://ben.kirw.in/decline/effect.html }
.as(ExitCode.Success)
} }
} }