Current section

Files

Jump to
caffeine_lang src caffeine_lang.gleam
Raw

src/caffeine_lang.gleam

import argv
import caffeine_lang/compiler
import gleam/io
fn print_usage() -> Nil {
io.println("Caffeine SLI/SLO compiler")
io.println("")
io.println("Usage:")
io.println(
" caffeine compile <specification_directory> <instantiation_directory> <output_directory>",
)
io.println("")
io.println("Arguments:")
io.println(
" specification_directory Directory containing specification files",
)
io.println(
" instantiation_directory Directory containing instantiation files",
)
io.println(" output_directory Directory to output compiled files")
}
pub fn main() -> Nil {
let args = argv.load().arguments
case args {
["compile", spec_dir, inst_dir, output_dir] -> {
compiler.compile(spec_dir, inst_dir, output_dir)
}
["compile"] -> {
io.println_error("Error: compile command requires 3 arguments")
print_usage()
}
["compile", ..] -> {
io.println_error("Error: compile command requires exactly 3 arguments")
print_usage()
}
["--help"] | ["-h"] | [] -> {
print_usage()
}
_ -> {
io.println_error("Error: unknown command")
print_usage()
}
}
}