Skip to content

Commit a77fd11

Browse files
committed
Chore: adopt eslint-plugin/require-meta-docs-url lint rule internally
1 parent 51fa5bb commit a77fd11

28 files changed

+38
-19
lines changed

.eslintrc.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
const version = require('./package.json').version;
4+
35
module.exports = {
46
root: true,
57
plugins: ['node'],
@@ -35,7 +37,13 @@ module.exports = {
3537
extends: ['plugin:self/all'],
3638
rules: {
3739
'self/report-message-format': ['error', '^[^a-z].*.$'],
38-
'self/require-meta-docs-url': 'off',
40+
'self/require-meta-docs-url': [
41+
'error',
42+
{
43+
pattern:
44+
`https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/tree/v${version}/docs/rules/{{name}}.md`,
45+
},
46+
],
3947
},
4048
},
4149
{

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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/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/v4.0.1/docs/rules/test-case-shorthand-strings.md',
2122
},
2223
fixable: 'code',
2324
schema: [{ enum: ['as-needed', 'never', 'consistent', 'consistent-as-needed'] }],

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"lint:js": "eslint .",
1212
"generate-readme-table": "node build/generate-readme-table.js",
1313
"generate-release": "release-it",
14-
"test": "nyc --all --check-coverage --include lib mocha tests --recursive"
14+
"test": "nyc --all --check-coverage --include lib mocha tests --recursive",
15+
"version": "eslint --fix . && git add ."
1516
},
1617
"files": [
1718
"lib/"

tests/lib/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ 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(

0 commit comments

Comments
 (0)