use microsandbox::{Sandbox, Error};
async fn get_or_create(name: &str) -> Result<Sandbox, Error> {
match Sandbox::get(name).await {
Ok(handle) => handle.start().await,
Err(Error::SandboxNotFound(_)) => {
Sandbox::builder(name).image("python:3.12").create().await
}
Err(e) => Err(e),
}
}
match sb.exec("python", ["script.py"]).await {
Ok(output) if output.status().success => {
println!("{}", output.stdout()?);
}
Ok(output) => {
eprintln!("Exit {}: {}", output.status().code, output.stderr()?);
}
Err(Error::ExecTimeout) => eprintln!("Timed out"),
Err(Error::Runtime(msg)) => eprintln!("Runtime: {msg}"),
Err(e) => return Err(e),
}