Skip to content

Commit a785bec

Browse files
authored
fix(deno-lint): Replace WalkBuilder.add_ignore with WalkBuilder.overrides (#646)
Fix the support of files.exclude from .denolint.json. It did not work at all. Neither with a directory, nor with a patern. Printing the errors from add_ignore revealed it: lib/: line 1: Is a directory (os error 21) lib/*.js: No such file or directory (os error 2) Overrides are supposed to handle both directories and patterns.
1 parent 000c6d7 commit a785bec

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

packages/deno-lint/src/lib.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use std::str;
1313
use deno_ast::MediaType;
1414
use deno_lint::linter::LinterBuilder;
1515
use deno_lint::rules::{get_all_rules, get_recommended_rules};
16+
use ignore::overrides::OverrideBuilder;
1617
use ignore::types::TypesBuilder;
1718
use ignore::WalkBuilder;
1819
use napi::bindgen_prelude::*;
@@ -133,13 +134,24 @@ fn denolint(__dirname: String, config_path: String) -> Result<bool> {
133134
Err(_) => __dirname.as_str(),
134135
},
135136
};
136-
let mut dir_walker = WalkBuilder::new(cwd);
137+
let mut dir_walker = WalkBuilder::new(cwd.clone());
137138
dir_walker
138139
.add_custom_ignore_filename(ignore_file_path)
139140
.types(types)
140141
.follow_links(true);
141-
for i in cfg_ignore_files {
142-
dir_walker.add_ignore(i);
142+
if !cfg_ignore_files.is_empty() {
143+
let mut overrides = OverrideBuilder::new(cwd);
144+
for f in cfg_ignore_files {
145+
let mut r = "!".to_string();
146+
r.push_str(&f);
147+
overrides
148+
.add(&r)
149+
.unwrap_or_else(|_| panic!("Adding excluded file {:?} failed", f));
150+
}
151+
let o = overrides
152+
.build()
153+
.unwrap_or_else(|_| panic!("Applying files.exclude from {:?} failed", config_path));
154+
dir_walker.overrides(o);
143155
}
144156
for entry in dir_walker.build().filter_map(|v| v.ok()) {
145157
let p = entry.path();

0 commit comments

Comments
 (0)