///|
fn[T] exit_with(code : Int, message : String) -> T {
  println(message)
  runtime_exit(code)
  panic()
}

///|
fn main {
  let matches = cli_command().parse() catch {
    error => exit_with(2, Show::to_string(error))
  }
  let output = execute_matches(matches) catch {
    error => exit_with(1, "moonsearch: \{error}")
  }
  println(output)
}