fn main() {
use calloop::{EventLoop, LoopSignal};
use calloop_subproc::SubprocListen;
let ls_command = calloop_subproc::Command::new("ls").with_args(["-a"]);
let listener = SubprocListen::new(ls_command).unwrap();
let mut event_loop: EventLoop<LoopSignal> = EventLoop::try_new().unwrap();
event_loop
.handle()
.insert_source(listener, |event, _, stopper| {
let msg = match event {
calloop_subproc::ListenEvent::Start => "Subprocess started".to_owned(),
calloop_subproc::ListenEvent::Line(line) => format!("Output: {}", line),
calloop_subproc::ListenEvent::End(res) => {
stopper.stop();
match res {
Ok(()) => "Subprocess completed".to_owned(),
Err(error) => format!("Subprocess error: {:?}", error),
}
}
};
println!("{}", msg);
false
})
.unwrap();
event_loop
.run(None, &mut event_loop.get_signal(), |_| {})
.unwrap();
}