use std::env;
use std::process::ExitCode;
use vmette::{Config, RootfsShare, VsockPort};
fn main() -> ExitCode {
let args: Vec<String> = env::args().skip(1).collect();
if args.len() < 3 {
eprintln!("usage: minimal KERNEL INITRAMFS ROOTFS [CMD]");
return ExitCode::from(2);
}
let cmd = args
.get(3)
.cloned()
.unwrap_or_else(|| "uname -a; cat /etc/alpine-release; exit 0".into());
let mut cfg = Config::new(&args[0], &args[1]);
cfg.rootfs_share = Some(RootfsShare {
path: args[2].clone().into(),
read_only: false,
});
cfg.exec_cmd = Some(cmd);
cfg.vsock_port = VsockPort::Auto;
match vmette::run(&cfg) {
Ok(out) => ExitCode::from(out.exit_code as u8),
Err(e) => {
eprintln!("error: {}", e);
ExitCode::from(1)
}
}
}