Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/justinrubek/async-watcher
A file notification library for tokio
https://github.com/justinrubek/async-watcher
async file-watcher flake nix nix-flake rust
Last synced: 4 months ago
JSON representation
A file notification library for tokio
- Host: GitHub
- URL: https://github.com/justinrubek/async-watcher
- Owner: justinrubek
- License: mit
- Created: 2023-06-24T19:27:57.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-17T01:27:27.000Z (9 months ago)
- Last Synced: 2024-09-28T14:21:22.214Z (4 months ago)
- Topics: async, file-watcher, flake, nix, nix-flake, rust
- Language: Rust
- Homepage:
- Size: 81.1 KB
- Stars: 7
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# async-watcher
[](https://github.com/justinrubek/async-watcher)
[](https://crates.io/crates/async-watcher)
[](https://docs.rs/async-watcher)This is a small library that uses [notify](https://github.com/notify-rs/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](https://github.com/dtolnay/async-trait) to provide an async interface for creating watchers.See the [examples](./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:
```sh
awatch './{crates,Cargo.toml,Cargo.lock}' echo "crates modified"
```