fix(cli): properly exit with code 0 on panic when running with bun (#10572)

This commit is contained in:
Lucas Fernandes Nogueira 2024-08-13 08:53:04 -03:00 committed by GitHub
parent f8d658ea1b
commit 41c7a6646b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 28 additions and 6 deletions

View File

@ -0,0 +1,5 @@
---
"@tauri-apps/cli": patch:bug
---
Exit with code 1 if a panic occurs when running the CLI with `bun`.

View File

@ -14,12 +14,29 @@ pub fn run(args: Vec<String>, bin_name: Option<String>, callback: JsFunction) ->
// we need to run in a separate thread so Node.js consumers
// can do work while `tauri dev` is running.
std::thread::spawn(move || match tauri_cli::try_run(args, bin_name) {
Ok(_) => function.call(Ok(true), ThreadsafeFunctionCallMode::Blocking),
Err(e) => function.call(
Err(Error::new(Status::GenericFailure, format!("{:#}", e))),
ThreadsafeFunctionCallMode::Blocking,
),
std::thread::spawn(move || {
let res = match std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| {
tauri_cli::try_run(args, bin_name)
})) {
Ok(t) => t,
Err(e) => {
return function.call(
Err(Error::new(
Status::GenericFailure,
"Tauri CLI unexpected panic",
)),
ThreadsafeFunctionCallMode::Blocking,
);
}
};
match res {
Ok(_) => function.call(Ok(true), ThreadsafeFunctionCallMode::Blocking),
Err(e) => function.call(
Err(Error::new(Status::GenericFailure, format!("{:#}", e))),
ThreadsafeFunctionCallMode::Blocking,
),
}
});
Ok(())