Add "ignore_patterns" option to config

This allows explicitly ignoring changes to certain
files or directories, even if the changed file ends
up matching `watch_patterns`. The default value,
`build/**/*` will ensure that changes in the build
directory will not trigger a duplicate rebuild.

Resolves #143
Resolves #215
This commit is contained in:
2025-08-15 16:24:26 -06:00
parent 813c8aa539
commit 52c138bf06
9 changed files with 119 additions and 28 deletions

View File

@@ -29,6 +29,7 @@ pub fn create_watcher(
modified: Arc<AtomicBool>,
project_dir: &Path,
patterns: GlobSet,
ignore_patterns: GlobSet,
waker: Waker,
) -> notify::Result<Watcher> {
let base_dir = fs::canonicalize(project_dir)?;
@@ -54,8 +55,8 @@ pub fn create_watcher(
let Ok(path) = path.strip_prefix(&base_dir_clone) else {
continue;
};
if patterns.is_match(path) {
// log::info!("File modified: {}", path.display());
if patterns.is_match(path) && !ignore_patterns.is_match(path) {
log::info!("File modified: {}", path.display());
any_match = true;
}
}