Let --exts and --filter work together

These two options are meant to work together: they are a union of filters
rather than competing. Thus:

    --exts toml,py --filter Gemfile

will match all of:

    foo.toml
    bar.py
    Gemfile

rather than matching no files at all because Gemfile doesn’t have an extension.

Fixes #259
This commit is contained in:
Félix Saparelli 2022-02-22 02:26:46 +13:00
parent 4af6865ef0
commit 03aef187bd
1 changed files with 16 additions and 8 deletions

View File

@ -126,22 +126,30 @@ impl Filterer for GlobsetFilterer {
return false;
}
if self.filters.num_ignores() > 0 && !self.filters.matched(path, is_dir).is_ignore()
{
trace!("ignored by globset filters");
return false;
let mut filtered = false;
if self.filters.num_ignores() > 0 {
trace!("running through glob filters");
filtered = true;
if self.filters.matched(path, is_dir).is_ignore() {
trace!("allowed by globset filters");
return true;
}
}
if !self.extensions.is_empty() {
trace!("running through extension filters");
filtered = true;
if is_dir {
trace!("failed on extension check due to being a dir");
return false;
}
if let Some(ext) = path.extension() {
if !self.extensions.iter().any(|e| e == ext) {
trace!("ignored by extension filter");
return false;
if self.extensions.iter().any(|e| e == ext) {
trace!("allowed by extension filter");
return true;
}
} else {
trace!(
@ -152,7 +160,7 @@ impl Filterer for GlobsetFilterer {
}
}
true
!filtered
}))
}
}