use std::env;
use file_engine::FileEngine;
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() -> file_engine::Result<()> {
let mut recursive = false;
let mut positional = Vec::new();
for arg in env::args().skip(1) {
if arg == "--recursive" {
recursive = true;
} else {
positional.push(arg);
}
}
let Some(path) = positional.into_iter().next() else {
eprintln!("usage: basic_watch [--recursive] <path>");
std::process::exit(2);
};
println!("watching {path} (recursive: {recursive}), Ctrl+C to stop");
let engine = FileEngine::new();
let mut handle = engine.watch(&path).recursive(recursive).start()?;
loop {
tokio::select! {
event = handle.events().next() => {
match event {
Some(event) => println!("{:?}: {:?}", event.kind, event.paths),
None => break,
}
}
_ = tokio::signal::ctrl_c() => {
println!("stopping...");
handle.cancel();
break;
}
}
}
handle.await?;
println!("stopped");
Ok(())
}