use std::fs; use std::process::Command; use tempfile::TempDir; pub fn sandbox_withconfig(extra_args: &[&str]) -> Command { let mut cmd = Command::new(env!("CARGO_BIN_EXE_agent-sandbox")); cmd.args(extra_args); cmd } pub fn sandbox(extra_args: &[&str]) -> Command { let mut cmd = sandbox_withconfig(&["--no-config"]); cmd.args(extra_args); cmd } pub struct ConfigFile { _dir: TempDir, path: String, } impl ConfigFile { pub fn new(content: &str) -> Self { let dir = TempDir::new().unwrap(); let path = dir.path().join("config.toml"); fs::write(&path, content).expect("failed to write config"); Self { _dir: dir, path: path.to_str().unwrap().to_string(), } } } impl std::ops::Deref for ConfigFile { type Target = str; fn deref(&self) -> &str { &self.path } }