-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
filter function still called with directories when nodir: true #11
Comments
@nicolasroger17 it should traverse directories while |
Fixed in |
@manidlou @Geelik should we re-open this? The depthLimit looks like it's working, but the original problem of filtering directories even with His example still doesn't work (with or without) But maybe a better solution than simply always traversing when This could be achieved by building on #12 and further simplifying the logic in the for loop like so: for (var i = 0; i < paths.length; i += 1) {
const pi = paths[i];
const st = opts.fs.statSync(pi);
const item = { path: pi, stats: st };
const isUnderDepthLimit = (!opts.rootDepth || pi.split(path.sep).length - opts.rootDepth < opts.depthLimit);
const filterResult = opts.filter ? opts.filter(item) : true;
const isDirectory = st.isDirectory();
const shouldAdd = filterResult && (isDirectory ? !opts.nodir : !opts.nofile);
const shouldTraverse = isDirectory && isUnderDepthLimit && (opts.traverseAll || filterResult);
if (shouldAdd) {
ls.push(item);
}
if (shouldTraverse) {
ls = klawSync(pi, opts, ls);
}
} If you think that makes sense I'll be happy to make a PR. |
Yeah i think adding an option is a good idea, it will still allow to filtered out directories with filter if needed and to not bother if we are sure we want to traverse all the tree. |
PR welcome! |
@manidlou PR made! 😄 |
Released in |
I just updated to version
4
(was on version 2).I noticed that with the option
nodir: true
, the library was actually looking only at the files, which is expected, but unfortunately it does so only at depth 0, and never goes inside of the directories.It is a bit of a problem, because if one wants to find specific files (using a
filter
function), you will need instead to do something like:and then you will need to loop on the
paths
one more time to filter the directories out yourself.It would great if the default with
nodir: true
was to traverse all the directories, and call thefilter
function only for the files.The text was updated successfully, but these errors were encountered: