Clerk: ensure error messages are printed properly (#522)

This commit is contained in:
Denis Merigoux 2023-10-10 14:04:42 +02:00 committed by GitHub
commit aa0ab95230
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -828,4 +828,27 @@ let runtest_cmd =
$ Cli.single_file)
let main_cmd = Cmd.group Cli.info [build_cmd; test_cmd; run_cmd; runtest_cmd]
let main () = exit (Cmdliner.Cmd.eval' main_cmd)
let main () =
try exit (Cmdliner.Cmd.eval' ~catch:false main_cmd) with
| Catala_utils.Cli.Exit_with n -> exit n
| Message.CompilerError content ->
let bt = Printexc.get_raw_backtrace () in
Message.Content.emit content Error;
if Catala_utils.Cli.globals.debug then
Printexc.print_raw_backtrace stderr bt;
exit Cmd.Exit.some_error
| Sys_error msg ->
let bt = Printexc.get_raw_backtrace () in
Message.Content.emit
(Message.Content.of_string ("System error: " ^ msg))
Error;
if Printexc.backtrace_status () then Printexc.print_raw_backtrace stderr bt;
exit Cmd.Exit.internal_error
| e ->
let bt = Printexc.get_raw_backtrace () in
Message.Content.emit
(Message.Content.of_string ("Unexpected error: " ^ Printexc.to_string e))
Error;
if Printexc.backtrace_status () then Printexc.print_raw_backtrace stderr bt;
exit Cmd.Exit.internal_error