use tinysandbox::sandbox::Sandbox;
#[tokio::main]
async fn main() {
let sandbox = Sandbox::builder().persist_session(true).build();
sandbox
.exec("mkdir -p /workspace/logs && cd /workspace")
.await;
sandbox
.exec("echo 'error: disk full\ninfo: started\nerror: disk full' > logs/app.log")
.await;
let result = sandbox.exec("grep -c error logs/app.log").await;
println!("error lines: {}", result.stdout.trim());
assert_eq!(result.stdout, "2\n");
let result = sandbox
.exec("sort -u logs/app.log | wc -l && echo exit=$?")
.await;
print!("{}", result.stdout);
sandbox.exec("grep error logs/app.log > errors.txt").await;
let result = sandbox.exec("cat /workspace/errors.txt").await;
print!("{}", result.stdout);
println!(
"last exec: {:?} across {} command(s)",
result.metrics.wall_time,
result.metrics.commands.len()
);
let stats = sandbox.stats();
println!("stats: {stats:?}");
}