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
case class CliConfig(
file: File = new File(".")
)
given Argument[File] = Argument.from("file") { str =>
val file = File(str)
(
@@ -94,11 +89,14 @@ object Main
version = "1.0"
) {
def main: Opts[IO[ExitCode]] =
Opts.argument[File]("file").map { file =>
compile(
file.getAbsolutePath,
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
Opts.arguments[File]("files").map { files =>
files
.parTraverse_ { file =>
compile(
file.getAbsolutePath,
outFile = Some(File(".", file.getName.stripSuffix(".wacc") + ".s"))
)
}
.as(ExitCode.Success)
}
}