Skip to content

Commit f7ab651

Browse files
authored
Chore: Adopt require-meta-docs-url lint rule internally (#128)
* Chore: adopt `eslint-plugin/require-meta-docs-url` lint rule internally * Chore: Switch rule doc URLs to use HEAD instead of a version tag
1 parent 51fa5bb commit f7ab651

27 files changed

+35
-19
lines changed

.eslintrc.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,13 @@ module.exports = {
3535
extends: ['plugin:self/all'],
3636
rules: {
3737
'self/report-message-format': ['error', '^[^a-z].*.$'],
38-
'self/require-meta-docs-url': 'off',
38+
'self/require-meta-docs-url': [
39+
'error',
40+
{
41+
pattern:
42+
'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/{{name}}.md',
43+
},
44+
],
3945
},
4046
},
4147
{

lib/index.js

+2-16
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ const fs = require('fs');
1313
const path = require('path');
1414
const packageMetadata = require('../package');
1515
const PLUGIN_NAME = packageMetadata.name.replace(/^eslint-plugin-/, '');
16-
const PLUGIN_VERSION = packageMetadata.version;
1716

1817
const configFilters = {
1918
all: () => true,
@@ -28,26 +27,13 @@ const configFilters = {
2827
// Plugin Definition
2928
// ------------------------------------------------------------------------------
3029

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-
}
44-
4530
// import all rules in lib/rules
4631
const allRules = Object.fromEntries(fs
4732
.readdirSync(`${__dirname}/rules`)
4833
.filter(fileName => fileName.endsWith('.js') && /^[^._]/.test(fileName))
4934
.map(fileName => fileName.replace(/\.js$/, ''))
50-
.map(ruleName => [ruleName, loadRule(ruleName)]));
35+
.map(ruleName => [ruleName, require(path.join(__dirname, 'rules', ruleName))])
36+
);
5137

5238
module.exports.rules = allRules;
5339

lib/rules/consistent-output.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
description: 'enforce consistent use of `output` assertions in rule tests',
1919
category: 'Tests',
2020
recommended: true,
21+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/consistent-output.md',
2122
},
2223
fixable: null, // or "code" or "whitespace"
2324
schema: [

lib/rules/fixer-return.js

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module.exports = {
2323
description: 'require fixer functions to return a fix',
2424
category: 'Rules',
2525
recommended: true,
26+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/fixer-return.md',
2627
},
2728
fixable: null,
2829
schema: [],

lib/rules/meta-property-ordering.js

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ module.exports = {
1717
description: 'enforce the order of meta properties',
1818
category: 'Rules',
1919
recommended: false,
20+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/meta-property-ordering.md',
2021
},
2122
fixable: 'code',
2223
schema: [{

lib/rules/no-deprecated-context-methods.js

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ module.exports = {
4141
description: 'disallow usage of deprecated methods on rule context objects',
4242
category: 'Rules',
4343
recommended: true,
44+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/no-deprecated-context-methods.md',
4445
},
4546
fixable: 'code',
4647
schema: [],

lib/rules/no-deprecated-report-api.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
description: 'disallow the version of `context.report()` with multiple arguments',
1919
category: 'Rules',
2020
recommended: true,
21+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/no-deprecated-report-api.md',
2122
},
2223
fixable: 'code', // or "code" or "whitespace"
2324
schema: [],

lib/rules/no-identical-tests.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
description: 'disallow identical tests',
1919
category: 'Tests',
2020
recommended: true,
21+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/no-identical-tests.md',
2122
},
2223
fixable: 'code',
2324
schema: [],

lib/rules/no-missing-placeholders.js

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module.exports = {
1919
description: 'disallow missing placeholders in rule report messages',
2020
category: 'Rules',
2121
recommended: true,
22+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/no-missing-placeholders.md',
2223
},
2324
fixable: null,
2425
schema: [],

lib/rules/no-only-tests.js

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module.exports = {
1010
description: 'disallow the test case property `only`',
1111
category: 'Tests',
1212
recommended: true,
13+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/no-only-tests.md',
1314
},
1415
hasSuggestions: true,
1516
schema: [],

lib/rules/no-unused-placeholders.js

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module.exports = {
1919
description: 'disallow unused placeholders in rule report messages',
2020
category: 'Rules',
2121
recommended: true,
22+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/no-unused-placeholders.md',
2223
},
2324
fixable: null,
2425
schema: [],

lib/rules/no-useless-token-range.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
description: 'disallow unnecessary calls to `sourceCode.getFirstToken()` and `sourceCode.getLastToken()`',
1919
category: 'Rules',
2020
recommended: true,
21+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/no-useless-token-range.md',
2122
},
2223
fixable: 'code',
2324
schema: [],

lib/rules/prefer-message-ids.js

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ module.exports = {
1414
description: 'require using `messageId` instead of `message` to report rule violations',
1515
category: 'Rules',
1616
recommended: false,
17+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/prefer-message-ids.md',
1718
},
1819
fixable: null,
1920
schema: [],

lib/rules/prefer-object-rule.js

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ module.exports = {
1717
description: 'disallow rule exports where the export is a function',
1818
category: 'Rules',
1919
recommended: true,
20+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/prefer-object-rule.md',
2021
},
2122
fixable: 'code',
2223
schema: [],

lib/rules/prefer-output-null.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
description: 'disallow invalid RuleTester test cases where the `output` matches the `code`',
1919
category: 'Tests',
2020
recommended: false,
21+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/prefer-output-null.md',
2122
},
2223
fixable: 'code',
2324
schema: [],

lib/rules/prefer-placeholders.js

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module.exports = {
1919
description: 'require using placeholders for dynamic report messages',
2020
category: 'Rules',
2121
recommended: false,
22+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/prefer-placeholders.md',
2223
},
2324
fixable: null,
2425
schema: [],

lib/rules/prefer-replace-text.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
description: 'require using `replaceText()` instead of `replaceTextRange()`',
1919
category: 'Rules',
2020
recommended: false,
21+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/prefer-replace-text.md',
2122
},
2223
fixable: null,
2324
schema: [],

lib/rules/report-message-format.js

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module.exports = {
1919
description: 'enforce a consistent format for rule report messages',
2020
category: 'Rules',
2121
recommended: false,
22+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/report-message-format.md',
2223
},
2324
fixable: null,
2425
schema: [

lib/rules/require-meta-docs-description.js

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ module.exports = {
1616
description: 'require rules to implement a `meta.docs.description` property with the correct format',
1717
category: 'Rules',
1818
recommended: false,
19+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/require-meta-docs-description.md',
1920
},
2021
fixable: null,
2122
schema: [

lib/rules/require-meta-docs-url.js

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module.exports = {
2323
description: 'require rules to implement a `meta.docs.url` property',
2424
category: 'Rules',
2525
recommended: false,
26+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/require-meta-docs-url.md',
2627
},
2728
fixable: 'code',
2829
schema: [{

lib/rules/require-meta-fixable.js

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module.exports = {
1919
description: 'require rules to implement a `meta.fixable` property',
2020
category: 'Rules',
2121
recommended: true,
22+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/require-meta-fixable.md',
2223
},
2324
schema: [
2425
{

lib/rules/require-meta-has-suggestions.js

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ module.exports = {
1414
description: 'require suggestable rules to implement a `meta.hasSuggestions` property',
1515
category: 'Rules',
1616
recommended: true,
17+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/require-meta-has-suggestions.md',
1718
},
1819
fixable: 'code',
1920
schema: [],

lib/rules/require-meta-schema.js

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ module.exports = {
1414
description: 'require rules to implement a `meta.schema` property',
1515
category: 'Rules',
1616
recommended: true,
17+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/require-meta-schema.md',
1718
},
1819
hasSuggestions: true,
1920
schema: [

lib/rules/require-meta-type.js

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module.exports = {
2020
description: 'require rules to implement a `meta.type` property',
2121
category: 'Rules',
2222
recommended: true,
23+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/require-meta-type.md',
2324
},
2425
fixable: null,
2526
schema: [],

lib/rules/test-case-property-ordering.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
description: 'require the properties of a test case to be placed in a consistent order',
1919
category: 'Tests',
2020
recommended: false,
21+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/test-case-property-ordering.md',
2122
},
2223
fixable: 'code',
2324
schema: [{

lib/rules/test-case-shorthand-strings.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
description: 'enforce consistent usage of shorthand strings for test cases with no options',
1919
category: 'Tests',
2020
recommended: false,
21+
url: 'https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/HEAD/docs/rules/test-case-shorthand-strings.md',
2122
},
2223
fixable: 'code',
2324
schema: [{ enum: ['as-needed', 'never', 'consistent', 'consistent-as-needed'] }],

tests/lib/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ const plugin = require('../..');
66
const RULE_NAMES = Object.keys(plugin.rules);
77

88
describe('exported plugin', () => {
9-
describe('adds a meta.docs.url property to each rule', () => {
9+
describe('has a meta.docs.url property on each rule', () => {
1010
RULE_NAMES.forEach(ruleName => {
1111
it(ruleName, () => {
1212
assert.match(
1313
plugin.rules[ruleName].meta.docs.url,
14-
/^https:\/\/github.com\/not-an-aardvark\/eslint-plugin-eslint-plugin\/tree\/v\d+\.\d+\.\d+(-\d+)?\/docs\/rules\/[\w-]+\.md$/
14+
/^https:\/\/github.com\/not-an-aardvark\/eslint-plugin-eslint-plugin\/tree\/HEAD\/docs\/rules\/[\w-]+\.md$/
1515
);
1616
});
1717
});

0 commit comments

Comments
 (0)