use rexpect::error::Error;
use rexpect::process::WaitStatus;
use rexpect::spawn;
fn main() -> Result<(), Error> {
let p = spawn("cat /etc/passwd", Some(2000))?;
match p.process().wait() {
Ok(WaitStatus::Exited(_, 0)) => println!("cat exited with code 0, all good!"),
_ => println!("cat exited with code >0, or it was killed"),
}
let mut p = spawn("cat /this/does/not/exist", Some(2000))?;
match p.process().wait() {
Ok(WaitStatus::Exited(_, 0)) => println!("cat succeeded"),
Ok(WaitStatus::Exited(_, c)) => {
println!("Cat failed with exit code {c}");
println!("Output (stdout and stderr): {}", p.exp_eof()?);
}
_ => println!("cat was probably killed"),
}
Ok(())
}