.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / eslint / lib / cli-engine / load-rules.js
1 /**
2  * @fileoverview Module for loading rules from files and directories.
3  * @author Michael Ficarra
4  */
5
6 "use strict";
7
8 //------------------------------------------------------------------------------
9 // Requirements
10 //------------------------------------------------------------------------------
11
12 const fs = require("fs"),
13     path = require("path");
14
15 const rulesDirCache = {};
16
17 //------------------------------------------------------------------------------
18 // Public Interface
19 //------------------------------------------------------------------------------
20
21 /**
22  * Load all rule modules from specified directory.
23  * @param {string} relativeRulesDir Path to rules directory, may be relative.
24  * @param {string} cwd Current working directory
25  * @returns {Object} Loaded rule modules.
26  */
27 module.exports = function(relativeRulesDir, cwd) {
28     const rulesDir = path.resolve(cwd, relativeRulesDir);
29
30     // cache will help performance as IO operation are expensive
31     if (rulesDirCache[rulesDir]) {
32         return rulesDirCache[rulesDir];
33     }
34
35     const rules = Object.create(null);
36
37     fs.readdirSync(rulesDir).forEach(file => {
38         if (path.extname(file) !== ".js") {
39             return;
40         }
41         rules[file.slice(0, -3)] = require(path.join(rulesDir, file));
42     });
43     rulesDirCache[rulesDir] = rules;
44
45     return rules;
46 };