use std::process::ExitCode;
use vimlrs::aot;
use vimlrs::fusevm_bridge::eval_source;
use vimlrs::ported::message::did_emsg;
const WORKER_STACK: usize = 1 << 30;
fn run() -> ExitCode {
if let Ok(exe) = std::env::current_exe() {
if let Some(files) = aot::try_load_embedded(&exe) {
for f in files.0 {
if eval_source(&f.source).is_err() {
return ExitCode::FAILURE;
}
}
let failed = did_emsg.with(|d| d.get()) != 0;
return if failed {
ExitCode::FAILURE
} else {
ExitCode::SUCCESS
};
}
}
vimlrs::cli::run()
}
fn main() -> ExitCode {
std::thread::Builder::new()
.stack_size(WORKER_STACK)
.spawn(run)
.expect("spawn worker thread")
.join()
.expect("worker thread panicked")
}