///|
async fn die(message : String, code~ : Int32) -> Unit {
@stdio.stderr.write("error: " + message + "\n") catch {
_ => ()
}
@sys.exit(code)
}
///|
async fn main {
let command = parse_command(@env.args()[1:].to_owned()) catch {
UsageError(message) => {
die(message, code=2)
return
}
}
match command {
Help(usage) => println(usage)
Version => println("kbbi 0.1.6")
Lookup(query) => {
let transport = @http_async.AsyncTransport::new(timeout_ms=10000)
defer transport.close()
let result = @lib.lookup(transport, query) catch {
err => {
die(describe_error(err), code=1)
return
}
}
println(result.to_json().stringify(indent=2))
}
}
}