use futures_lite::future::block_on;
use std::env;
use std::fs;
use std::process;
fn safe_main() -> i32 {
let args: Vec<String> = env::args().collect();
let path = match args.as_slice() {
[_, path] => path,
_ => {
eprintln!("Usage error: expected a file name");
process::exit(1);
}
};
let mut machine = endbasic_std::MachineBuilder::default().build().unwrap();
let mut input = match fs::File::open(path) {
Ok(file) => file,
Err(e) => {
eprintln!("ERROR: {}", e);
process::exit(1);
}
};
match block_on(machine.exec(&mut input)) {
Ok(stop_reason) => stop_reason.as_exit_code(),
Err(e) => {
eprintln!("ERROR: {}", e);
1
}
}
}
fn main() {
process::exit(safe_main());
}