///|
async fn die(message : String, code~ : Int) -> Unit {
@stdio.stderr.write("error: " + message + "\n") catch {
_ => ()
}
@sys.exit(code)
}
///|
fn bot_token(matches : @argparse.Matches) -> String raise UsageError {
match matches.values.get("token") {
Some(values) if values.length() > 0 && values[0].trim() != "" => values[0]
_ => raise UsageError("no bot token: set DISCORD_TOKEN or pass --token")
}
}
///|
async fn main {
let matches = build_cli().parse(env=@env.get_env_vars()) catch {
err => {
die(err.to_string(), code=2)
return
}
}
try {
let command = parse_command(matches)
let token = bot_token(matches)
let client = @dhttp.Client(token, max_connections=1)
defer client.close()
let result = run(client, command)
println(result.stringify(indent=2))
} catch {
UsageError(message) => die(message, code=2)
err => die(describe_error(err), code=1)
}
}