///|
#cfg(target="js")
fn argument_offset() -> Int32 {
2
}
///|
#cfg(not(target="js"))
fn argument_offset() -> Int32 {
1
}
///|
fn main {
let args = @env.args()
let offset = argument_offset()
if args.length() != offset + 1 {
println(
"{\"schema\":\"moonbelief.error.v1\",\"error\":\"usage: moonbelief JSON_REQUEST\"}",
)
return
}
let report = @belief.execute_json(args[offset]) catch {
error => {
let (kind, message) = match error {
Invalid(message) => ("invalid", message)
Budget(message) => ("budget", message)
FrameMismatch => ("frame-mismatch", "ordered frames differ")
TotalConflict =>
(
"total-conflict", "insufficient nonempty mass for decision projection",
)
}
println(
Json::object({
"schema": Json::string("moonbelief.error.v1"),
"kind": Json::string(kind),
"error": Json::string(message),
}).stringify(),
)
return
}
}
println(report)
}