tasks/lints/shared/scan.js
'use strict';
const fs = require('fs'),
path = require('path');
function exclude (exclusions, file) {
return (exclusions || []).some(function (exclusion) {
if (exclusion[0] === '*') {
return path.extname(file) === exclusion.substring(1);
}
else {
return path.basename(file) === exclusion;
}
});
}
function include (filetype, file) {
return !filetype || file.indexOf(filetype, file.length - filetype.length) >= 0;
}
function forEachFileIn (dir, fileCallback, options) {
fs.readdirSync(dir).forEach(file => {
const filePath = path.join(dir, file);
if (!exclude(options.exclude, filePath)) {
if (fs.lstatSync(filePath).isDirectory()) {
forEachFileIn(filePath, fileCallback, options);
}
else if (include(options.filetype, filePath)) {
fileCallback(filePath);
}
}
});
}
module.exports = { forEachFileIn };