Skip to content

Commit eb207d0

Browse files
Update: add meta.docs.url to rules
(closes #54)
1 parent bd97347 commit eb207d0

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

lib/index.js

+17-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111

1212
const fs = require('fs');
1313
const path = require('path');
14-
const PLUGIN_NAME = require('../package').name.replace(/^eslint-plugin-/, '');
14+
const packageMetadata = require('../package');
15+
const PLUGIN_NAME = packageMetadata.name.replace(/^eslint-plugin-/, '');
16+
const PLUGIN_VERSION = packageMetadata.version;
1517

1618
const configFilters = {
1719
all: () => true,
@@ -26,13 +28,26 @@ const configFilters = {
2628
// Plugin Definition
2729
// ------------------------------------------------------------------------------
2830

31+
/**
32+
* Loads a given rule from the filesystem and generates its documentation URL
33+
* @param {string} ruleName The name of the rule
34+
* @returns {Rule} The ESLint rule to export
35+
*/
36+
function loadRule (ruleName) {
37+
const rule = require(path.join(__dirname, 'rules', ruleName));
38+
39+
rule.meta.docs.url =
40+
`https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/v${PLUGIN_VERSION}/docs/rules/${ruleName}.md`;
41+
42+
return rule;
43+
}
2944

3045
// import all rules in lib/rules
3146
const allRules = fs
3247
.readdirSync(`${__dirname}/rules`)
3348
.filter(fileName => fileName.endsWith('.js') && /^[^._]/.test(fileName))
3449
.map(fileName => fileName.replace(/\.js$/, ''))
35-
.reduce((rules, ruleName) => Object.assign(rules, { [ruleName]: require(path.join(__dirname, 'rules', ruleName)) }), {});
50+
.reduce((rules, ruleName) => Object.assign(rules, { [ruleName]: loadRule(ruleName) }), {});
3651

3752
module.exports.rules = allRules;
3853

tests/lib/index.js

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use strict';
2+
3+
const assert = require('chai').assert;
4+
const plugin = require('../..');
5+
6+
describe('exported plugin', () => {
7+
describe('adds a meta.docs.url property to each rule', () => {
8+
Object.keys(plugin.rules).forEach(ruleName => {
9+
it(ruleName, () => {
10+
assert.match(
11+
plugin.rules[ruleName].meta.docs.url,
12+
/^https:\/\/github.com\/not-an-aardvark\/eslint-plugin-eslint-plugin\/tree\/v\d+\.\d+\.\d+\/docs\/rules\/[\w-]+\.md$/
13+
);
14+
});
15+
});
16+
});
17+
});

0 commit comments

Comments
 (0)