Spaces:
Runtime error
Runtime error
/** | |
* @fileoverview Module for loading rules from files and directories. | |
* @author Michael Ficarra | |
*/ | |
; | |
//------------------------------------------------------------------------------ | |
// Requirements | |
//------------------------------------------------------------------------------ | |
const fs = require("fs"), | |
path = require("path"); | |
const rulesDirCache = {}; | |
//------------------------------------------------------------------------------ | |
// Public Interface | |
//------------------------------------------------------------------------------ | |
/** | |
* Load all rule modules from specified directory. | |
* @param {string} relativeRulesDir Path to rules directory, may be relative. | |
* @param {string} cwd Current working directory | |
* @returns {Object} Loaded rule modules. | |
*/ | |
module.exports = function(relativeRulesDir, cwd) { | |
const rulesDir = path.resolve(cwd, relativeRulesDir); | |
// cache will help performance as IO operation are expensive | |
if (rulesDirCache[rulesDir]) { | |
return rulesDirCache[rulesDir]; | |
} | |
const rules = Object.create(null); | |
fs.readdirSync(rulesDir).forEach(file => { | |
if (path.extname(file) !== ".js") { | |
return; | |
} | |
rules[file.slice(0, -3)] = require(path.join(rulesDir, file)); | |
}); | |
rulesDirCache[rulesDir] = rules; | |
return rules; | |
}; | |