lib.rs 881 B

1234567891011121314151617181920212223
  1. // Copyright 2019-2021 Tauri Programme within The Commons Conservancy
  2. // SPDX-License-Identifier: Apache-2.0
  3. // SPDX-License-Identifier: MIT
  4. use napi::{
  5. threadsafe_function::{ErrorStrategy, ThreadsafeFunction, ThreadsafeFunctionCallMode},
  6. Error, JsFunction, Result, Status,
  7. };
  8. #[napi_derive::napi]
  9. pub fn run(args: Vec<String>, bin_name: Option<String>, callback: JsFunction) -> Result<()> {
  10. let function: ThreadsafeFunction<bool, ErrorStrategy::CalleeHandled> = callback
  11. .create_threadsafe_function(0, |ctx| ctx.env.get_boolean(ctx.value).map(|v| vec![v]))?;
  12. std::thread::spawn(move || match tauri_cli::run(args, bin_name) {
  13. Ok(_) => function.call(Ok(true), ThreadsafeFunctionCallMode::Blocking),
  14. Err(e) => function.call(
  15. Err(Error::new(Status::GenericFailure, format!("{:#}", e))),
  16. ThreadsafeFunctionCallMode::Blocking,
  17. ),
  18. });
  19. Ok(())
  20. }