You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.3 KiB
99 lines
2.3 KiB
2 years ago
|
const { sep } = require("path");
|
||
|
|
||
|
/* GET ARRAY */
|
||
|
module.exports.getArray = function(state) {
|
||
|
return state.paths;
|
||
|
};
|
||
|
module.exports.getArrayGroup = function() {
|
||
|
return [""].slice(0, 0);
|
||
|
};
|
||
|
|
||
|
/** PUSH FILE */
|
||
|
module.exports.pushFileFilterAndCount = function(filters) {
|
||
|
return function(filename, _files, _dir, state) {
|
||
|
if (filters.some((f) => f(filename))) state.counts.files++;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
module.exports.pushFileFilter = function(filters) {
|
||
|
return function(filename, files) {
|
||
|
if (filters.some((f) => f(filename))) files.push(filename);
|
||
|
};
|
||
|
};
|
||
|
|
||
|
module.exports.pushFileCount = function(_filename, _files, _dir, state) {
|
||
|
state.counts.files++;
|
||
|
};
|
||
|
module.exports.pushFile = function(filename, files) {
|
||
|
files.push(filename);
|
||
|
};
|
||
|
|
||
|
/** PUSH DIR */
|
||
|
module.exports.pushDir = function(dirPath, paths) {
|
||
|
paths.push(dirPath);
|
||
|
};
|
||
|
|
||
|
/** JOIN PATH */
|
||
|
module.exports.joinPathWithBasePath = function(filename, dir) {
|
||
|
return `${dir}${sep}${filename}`;
|
||
|
};
|
||
|
module.exports.joinPath = function(filename) {
|
||
|
return filename;
|
||
|
};
|
||
|
|
||
|
/** WALK DIR */
|
||
|
module.exports.walkDirExclude = function(exclude) {
|
||
|
return function(walk, state, path, dir, currentDepth, callback) {
|
||
|
if (!exclude(dir,path,currentDepth)) {
|
||
|
module.exports.walkDir(walk, state, path, dir, currentDepth, callback);
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
|
||
|
module.exports.walkDir = function(
|
||
|
walk,
|
||
|
state,
|
||
|
path,
|
||
|
_dir,
|
||
|
currentDepth,
|
||
|
callback
|
||
|
) {
|
||
|
state.queue++;
|
||
|
state.counts.dirs++;
|
||
|
walk(state, path, currentDepth, callback);
|
||
|
};
|
||
|
|
||
|
/** GROUP FILES */
|
||
|
module.exports.groupFiles = function(dir, files, state) {
|
||
|
state.counts.files += files.length;
|
||
|
state.paths.push({ dir, files });
|
||
|
};
|
||
|
module.exports.empty = function() {};
|
||
|
|
||
|
/** CALLBACK INVOKER */
|
||
|
module.exports.callbackInvokerOnlyCountsSync = function(state) {
|
||
|
return state.counts;
|
||
|
};
|
||
|
module.exports.callbackInvokerDefaultSync = function(state) {
|
||
|
return state.paths;
|
||
|
};
|
||
|
|
||
|
module.exports.callbackInvokerOnlyCountsAsync = callbackInvokerBuilder(
|
||
|
"counts"
|
||
|
);
|
||
|
module.exports.callbackInvokerDefaultAsync = callbackInvokerBuilder("paths");
|
||
|
|
||
|
function report(err, callback, output, suppressErrors) {
|
||
|
if (err) {
|
||
|
if (!suppressErrors) callback(err, null);
|
||
|
return;
|
||
|
}
|
||
|
callback(null, output);
|
||
|
}
|
||
|
|
||
|
function callbackInvokerBuilder(output) {
|
||
|
return function(err, state) {
|
||
|
report(err, state.callback, state[output], state.options.suppressErrors);
|
||
|
};
|
||
|
}
|