summaryrefslogtreecommitdiff
path: root/tools/eslint/lib/load-rules.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/lib/load-rules.js')
-rw-r--r--tools/eslint/lib/load-rules.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/eslint/lib/load-rules.js b/tools/eslint/lib/load-rules.js
new file mode 100644
index 0000000000..62183f344d
--- /dev/null
+++ b/tools/eslint/lib/load-rules.js
@@ -0,0 +1,39 @@
+/**
+ * @fileoverview Module for loading rules from files and directories.
+ * @author Michael Ficarra
+ */
+
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+var fs = require("fs"),
+ path = require("path");
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * Load all rule modules from specified directory.
+ * @param {String} [rulesDir] Path to rules directory, may be relative. Defaults to `lib/rules`.
+ * @returns {Object} Loaded rule modules by rule ids (file names).
+ */
+module.exports = function(rulesDir) {
+ if (!rulesDir) {
+ rulesDir = path.join(__dirname, "rules");
+ } else {
+ rulesDir = path.resolve(process.cwd(), rulesDir);
+ }
+
+ var rules = Object.create(null);
+ fs.readdirSync(rulesDir).forEach(function(file) {
+ if (path.extname(file) !== ".js") {
+ return;
+ }
+ rules[file.slice(0, -3)] = require(path.join(rulesDir, file));
+ });
+ return rules;
+};