#![recursion_limit = "256"]
use anyhow::Result;
use clap::Parser;
use stigmerge::{App, Cli};
#[cfg(target_os = "android")]
use jni::{objects::JObject, InitArgsBuilder, JNIVersion, JavaVM};
use stigmerge_peer::is_cancelled;
#[cfg(target_os = "android")]
fn init_native() -> Result<()> {
let jvm_args = InitArgsBuilder::new()
.version(JNIVersion::V8)
.build()?;
let jvm = JavaVM::new(jvm_args)?;
let env = jvm.attach_current_thread()?;
unsafe {
veilid_core::veilid_core_setup_android(env.unsafe_clone(), JObject::null());
}
Ok(())
}
#[cfg(not(target_os = "android"))]
fn init_native() -> Result<()> {
Ok(())
}
#[tokio::main]
async fn main() -> Result<()> {
init_native()?;
match tokio_main().await {
Err(e) => {
if !is_cancelled(&e) {
eprintln!("{} error: Something went wrong", env!("CARGO_PKG_NAME"));
Err(e)
} else {
Ok(())
}
}
ok => ok,
}
}
async fn tokio_main() -> Result<()> {
let cli = Cli::parse();
let mut app = App::new(cli)?;
app.run().await?;
Ok(())
}