blob: f77cee37af54ee8a320f39d77aaa6fbaa74f3bcc [file]
const {GlobSync} = require('glob')
const inherits = require('util.inherits')
const {
IGNORE,
createTasks
} = require('./util')
function _GlobSync (pattern, options, shouldIgnore) {
this[IGNORE] = shouldIgnore
GlobSync.call(this, pattern, options)
}
inherits(_GlobSync, GlobSync)
_GlobSync.prototype._readdir = function _readdir (abs, inGlobStar) {
// `options.nodir` makes `options.mark` as `true`.
// Mark `abs` first
// to make sure `'node_modules'` will be ignored immediately
// with ignore pattern `'node_modules/'`.
// There is a built-in cache about marked `File.Stat` in `glob`,
// so that we could not worry about the extra invocation of `this._mark()`
const marked = this._mark(abs)
if (this[IGNORE] && this[IGNORE](marked)) {
return null
}
return GlobSync.prototype._readdir.call(this, abs, inGlobStar)
}
exports.sync = (_patterns, options = {}) => {
const {
join,
patterns,
ignores,
opts,
result
} = createTasks(_patterns, options)
if (result) {
return result
}
const groups = patterns.map(
pattern => new _GlobSync(pattern, opts, ignores).found
)
return join(groups)
}