#file-watcher #async #tokio #change #async-watcher

async-watcher

Trigger events when files or directories change

5 unstable releases

0.3.0 May 17, 2024
0.2.1 Mar 30, 2024
0.2.0 Sep 19, 2023
0.1.1 Jun 24, 2023
0.1.0 Jun 24, 2023

#1041 in Asynchronous

Download history 129/week @ 2025-01-05 136/week @ 2025-01-12 131/week @ 2025-01-19 166/week @ 2025-01-26 99/week @ 2025-02-02 87/week @ 2025-02-09 121/week @ 2025-02-16 253/week @ 2025-02-23 125/week @ 2025-03-02 125/week @ 2025-03-09 215/week @ 2025-03-16 155/week @ 2025-03-23 269/week @ 2025-03-30 334/week @ 2025-04-06 219/week @ 2025-04-13 215/week @ 2025-04-20

1,056 downloads per month
Used in kaledis

MIT license

15KB
251 lines

async-watcher

github crates.io docs.rs

This is a small library that uses notify to implement a file watcher that is debounced. The debouncing helps ensure you don't get too many events on a single file leading to extra work. The original use case of this was to watch a directory and rebuild when there are changes. Without debouncing, a single file could trigger multiple rebuilds. Instead, async-watcher can be used to trigger events after a specific time threshold.

Notify takes care of all of the work, but the debouncing traits weren't async. async-watcher leverages async-trait to provide an async interface for creating watchers.

See the examples for usage.

cli

Included is a command line application that can be used to execute a command when notified of changes. The files to watch are specified with a glob pattern as the first argument. Subsequent arguments are the command to run and its arguments. The program is exposed as a nix flake package called awatch.

example usage:

awatch './{crates,Cargo.toml,Cargo.lock}' echo "crates modified"

Dependencies

~4–17MB
~144K SLoC