feat(cli): add command-line entry point
This commit is contained in:
1 parent
e641b9e06b
commit
7735863cab
1 file changed
+35
@@ -0,0 +1,35 @@
|
|||||||
|
package lumen.cli
|
||||||
|
|
||||||
|
import lumen.Lumen
|
||||||
|
import lumen.LumenError
|
||||||
|
import lumen.bytecode.Disassembler
|
||||||
|
import lumen.formatError
|
||||||
|
import lumen.module.ModuleError
|
||||||
|
import java.io.File
|
||||||
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
if (args.isEmpty()) {
|
||||||
|
Repl().start()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (args[0] == "--dump" && args.size > 1) {
|
||||||
|
Disassembler.dump(Lumen.compile(File(args[1]).readText()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val path = args[0]
|
||||||
|
val file = File(path)
|
||||||
|
if (!file.exists()) {
|
||||||
|
System.err.println("error: file not found: $path")
|
||||||
|
exitProcess(1)
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Lumen.runFile(file)
|
||||||
|
} catch (error: ModuleError) {
|
||||||
|
System.err.println(formatError(error.source, error.error))
|
||||||
|
exitProcess(1)
|
||||||
|
} catch (error: LumenError) {
|
||||||
|
System.err.println(formatError(file.readText(), error))
|
||||||
|
exitProcess(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user