use color_eyre::Result;
use vmexec::{
runner,
types::{Interactive, Memory},
utils::{VmexecDirs, find_required_tools},
vms::reserve_vm,
};
#[tokio::main]
async fn main() -> Result<()> {
let dirs = VmexecDirs::new()?;
let tool_paths = find_required_tools()?;
let reservation = reserve_vm(&dirs, None)?;
let run_opts = runner::RunOptions {
memory: Some(Memory { gb: 4 }),
interactive: Interactive::Never,
args: vec!["echo".to_string(), "hello from inside the VM".to_string()],
rm: true,
..Default::default()
};
let output = runner::prepare_and_run(&dirs, reservation, tool_paths, run_opts).await?;
if let Some(output) = output {
println!("exit code: {}", output.exit_code);
println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
}
Ok(())
}