extern crate rexpect;
use rexpect::spawn;
use rexpect::session::PtyReplSession;
use rexpect::errors::*;
fn ed_session() -> Result<PtyReplSession> {
let mut ed = PtyReplSession {
echo_on: false,
prompt: "> ".to_string(),
pty_session: spawn("/bin/ed -p '> '", Some(2000))?,
quit_command: Some("Q".to_string()),
};
ed.wait_for_prompt()?;
Ok(ed)
}
fn do_ed_repl() -> Result<()> {
let mut ed = ed_session()?;
ed.send_line("a")?;
ed.send_line("ed is the best editor evar")?;
ed.send_line(".")?;
ed.wait_for_prompt()?;
ed.send_line(",l")?;
ed.exp_string("ed is the best editor evar$")?;
ed.send_line("Q")?;
ed.exp_eof()?;
Ok(())
}
fn main() {
do_ed_repl().unwrap_or_else(|e| panic!("ed session failed with {}", e));
}