#file-watcher #watcher #notify #friendly #async #watchexec

bin+lib negahban

🧐 A simple file watcher, based on notify, designed to be fast, easy-to-use and async friendly

6 releases

0.3.1 Jun 3, 2023
0.3.0 Mar 24, 2023
0.2.5 Mar 23, 2023
0.1.0 Mar 11, 2023

#507 in Asynchronous

MIT license

18KB
220 lines

Negahban

🧐 A simple file watcher, based on notify, designed to be fast, easy-to-use and async friendly. Project is alpha, it may fail at any given moment, heavily WIP

MIT License Crates.io docs.rs

Name 😀

Negahban(نگهبان) is a farsi word which translates roughly to watchman/sentinel

Overview 📊

negahban is a Rust library based on notify that allows you to watch a directory for changes.

This library is designed to be:

  • Simple, Sane defaults 🌱
  • Blazing Fast 🚀
  • Async friendly 🔀
  • Cross-platform 🌐

Features ✨

  • Supports multiple event types such as file creation, deletion, and modification.
  • [WIP] Provides HookType, EventType, WatchMode, RecurseMode, WatcherMode configuration as simple to use enums.
  • Can ignore specific files and directories.
  • Easy to use and async friendly.

Usage 🔨

Run this in your rust project folder:

cargo add negahban

A minimal example that monitors the current directory and logs events to the console:

use negahban::{Negahban, HookType};

fn main() {
    Negahban{
        // fields you want to change e.g.: 
        hook: HookType::IndefiniteHook(
            Box::new(|event| (println!("{event:#?}")))
        ),
        ..Negahban::default() // sets rest of them to default
    }.watch();
}

Examples 👨‍💻

Check the tests/ directory for more examples.

License ⚖

This project is licensed under the MIT License - see the LICENSE file for details.

Dependencies

~2–11MB
~100K SLoC