watchexec/lib
Félix Saparelli 71a178d4c2 Actually check process when querying for completion
With --on-update=do-nothing, we need to know when the process is done
before we can spawn a new one, but we never actually used to truly check
the process, only the presence or absence of a spawned process. That
process may have already completed, but because we don't wait on it when
in do-nothing mode, there is no opportunity to notice this.

So now we either actually check the completion status of the process (on
Windows), or we expose the `done` mutex value on demand (Unix).
Essentially this adds a way to check the completion status of the
process without blocking (modulo a mutex lock on unix).

Fixes #200
2021-07-10 03:43:21 +12:00
..
src Actually check process when querying for completion 2021-07-10 03:43:21 +12:00
Cargo.toml Update to clearscreen 1.0.4 for bugfix 2021-05-22 19:59:32 +12:00
README.md Split readmes 2021-05-09 03:44:11 +12:00

Crates.io page API Docs Crate license: Apache 2.0 MSRV: 1.43.0 (breaking) CI status

Watchexec library

The library which powers Watchexec CLI and other tools.

Quick start

use watchexec::{
    config::ConfigBuilder,
    error::Result,
    pathop::PathOp,
    run::{
        ExecHandler,
        Handler,
        watch,
    },
};

fn main() -> Result<()> {
    let config = ConfigBuilder::default()
        .clear_screen(true)
        .run_initially(true)
        .paths(vec![ "/path/to/dir".into() ])
        .cmd(vec![ "date; seq 1 10".into() ])
        .build()?;

    let handler = MyHandler(ExecHandler::new(options)?);
    watch(&handler)
}

struct MyHandler(ExecHandler);

impl Handler for MyHandler {
    fn args(&self) -> Config {
        self.0.args()
    }

    fn on_manual(&self) -> Result<bool> {
        println!("Running manually!");
        self.0.on_manual()
    }

    fn on_update(&self, ops: &[PathOp]) -> Result<bool> {
        println!("Running manually {:?}", ops);
        self.0.on_update(ops)
    }
}