///|
/// Command line front end: read a .seq file, render it, print the result.
fn usage() -> Unit {
println("seqdraw — render sequence diagrams as terminal text")
println("")
println("usage: seqdraw ")
println("")
println("The file grammar is documented in README.md: participants, arrows,")
println("self messages, notes and alt/loop blocks, one construct per line.")
}
///|
fn load(path : String) -> String {
@fs.read_file_to_string(path) catch {
_ => ""
}
}
///|
fn main {
let args = @env.args()
if args.length() < 2 {
usage()
return
}
let path = args[1]
if path == "--help" || path == "-h" {
usage()
return
}
let source = load(path)
if source.length() == 0 {
eprintln("seqdraw: cannot read '\{path}'")
return
}
match @seqdraw.parse(source) {
Err(err) => eprintln("seqdraw: \{err.to_text()}")
Ok(diagram) => println(@seqdraw.render(diagram))
}
}