diff --git a/docs/deprecated-rules.md b/docs/deprecated-rules.md new file mode 100644 index 0000000000..135c70731d --- /dev/null +++ b/docs/deprecated-rules.md @@ -0,0 +1,9 @@ +# Deprecated Rules + +## prefer-exponentiation-operator + +This rule is deprecated in favor of the built-in ESLint [`prefer-exponentiation-operator`](https://eslint.org/docs/rules/prefer-exponentiation-operator) rule. + +## regex-shorthand + +This rule was renamed to [`better-regex`](rules/better-regex.md). diff --git a/docs/rules/prefer-exponentiation-operator.md b/docs/rules/prefer-exponentiation-operator.md deleted file mode 100644 index 7cf150b15d..0000000000 --- a/docs/rules/prefer-exponentiation-operator.md +++ /dev/null @@ -1 +0,0 @@ -This rule is deprecated. Use the built-in ESLint [`prefer-exponentiation-operator`](https://eslint.org/docs/rules/prefer-exponentiation-operator) rule instead. diff --git a/docs/rules/regex-shorthand.md b/docs/rules/regex-shorthand.md deleted file mode 100644 index 88873def46..0000000000 --- a/docs/rules/regex-shorthand.md +++ /dev/null @@ -1 +0,0 @@ -This rule was renamed to [`better-regex`](better-regex.md). diff --git a/index.js b/index.js index f17af92ef5..5dcd13483b 100644 --- a/index.js +++ b/index.js @@ -1,9 +1,19 @@ 'use strict'; const path = require('path'); const importModules = require('import-modules'); +const createDeprecatedRules = require('./rules/utils/create-deprecated-rules'); + +const deprecatedRules = createDeprecatedRules({ + // {ruleId: ReplacementRuleId | ReplacementRuleId[]}, if no replacement, use `{ruleId: []}` + 'prefer-exponentiation-operator': 'prefer-exponentiation-operator', + 'regex-shorthand': 'unicorn/better-regex' +}); module.exports = { - rules: importModules(path.resolve(__dirname, 'rules'), {camelize: false}), + rules: { + ...importModules(path.resolve(__dirname, 'rules'), {camelize: false}), + ...deprecatedRules + }, configs: { recommended: { env: { diff --git a/readme.md b/readme.md index 933096126a..f9f8dec62e 100644 --- a/readme.md +++ b/readme.md @@ -170,8 +170,7 @@ Configure it in `package.json`. ## Deprecated Rules -- [prefer-exponentiation-operator](docs/rules/prefer-exponentiation-operator.md) - Use the built-in ESLint [`prefer-exponentiation-operator`](https://eslint.org/docs/rules/prefer-exponentiation-operator) rule instead. -- [regex-shorthand](docs/rules/regex-shorthand.md) - Renamed to [`better-regex`](docs/rules/better-regex.md). +See [docs/deprecated-rules.md](docs/deprecated-rules.md) ## Recommended config diff --git a/rules/prefer-exponentiation-operator.js b/rules/prefer-exponentiation-operator.js deleted file mode 100644 index e410b14a30..0000000000 --- a/rules/prefer-exponentiation-operator.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; -const getDocumentationUrl = require('./utils/get-documentation-url'); - -const create = () => ({}); - -module.exports = { - create, - meta: { - type: 'suggestion', - docs: { - url: getDocumentationUrl(__filename) - }, - fixable: 'code', - deprecated: true, - replacedBy: [ - 'prefer-exponentiation-operator' - ] - } -}; diff --git a/rules/regex-shorthand.js b/rules/regex-shorthand.js deleted file mode 100644 index 7a305acde2..0000000000 --- a/rules/regex-shorthand.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; -const getDocumentationUrl = require('./utils/get-documentation-url'); - -const create = () => ({}); - -module.exports = { - create, - meta: { - type: 'suggestion', - docs: { - url: getDocumentationUrl(__filename) - }, - fixable: 'code', - deprecated: true, - replacedBy: [ - 'unicorn/better-regex' - ] - } -}; diff --git a/rules/utils/create-deprecated-rules.js b/rules/utils/create-deprecated-rules.js new file mode 100644 index 0000000000..76406a5fa5 --- /dev/null +++ b/rules/utils/create-deprecated-rules.js @@ -0,0 +1,21 @@ +'use strict'; +const packageJson = require('../../package'); +const repoUrl = 'https://github.com/sindresorhus/eslint-plugin-unicorn'; + +function createDeprecatedRules(data) { + const rules = {}; + for (const [ruleId, replacedBy = []] of Object.entries(data)) { + rules[ruleId] = { + create: () => ({}), + meta: { + docs: { + url: `${repoUrl}/blob/v${packageJson.version}/docs/deprecated-rules.md#${ruleId}` + }, + deprecated: true, + replacedBy: Array.isArray(replacedBy) ? replacedBy : [replacedBy] + } + }; + } +} + +module.exports = createDeprecatedRules; diff --git a/test/package.js b/test/package.js index 4020fcd59e..fb9cc66e51 100644 --- a/test/package.js +++ b/test/package.js @@ -49,7 +49,7 @@ test('Every rule is defined in index file in alphabetical order', t => { 'There are more exported rules than rule files.' ); t.is( - Object.keys(index.configs.recommended.rules).length - ignoredRules.length, + Object.keys(index.configs.recommended.rules).length - deprecatedRules.length - ignoredRules.length, ruleFiles.length - deprecatedRules.length, 'There are more exported rules in the recommended config than rule files.' ); diff --git a/test/prefer-exponentiation-operator.js b/test/prefer-exponentiation-operator.js deleted file mode 100644 index 6639f3cbfd..0000000000 --- a/test/prefer-exponentiation-operator.js +++ /dev/null @@ -1,7 +0,0 @@ -import test from 'ava'; -import rule from '../rules/prefer-exponentiation-operator'; - -test('deprecated', t => { - t.true(rule.meta.deprecated); - t.deepEqual(rule.meta.replacedBy, ['prefer-exponentiation-operator']); -}); diff --git a/test/regex-shorthand.js b/test/regex-shorthand.js deleted file mode 100644 index 6b522f0fcd..0000000000 --- a/test/regex-shorthand.js +++ /dev/null @@ -1,7 +0,0 @@ -import test from 'ava'; -import rule from '../rules/regex-shorthand'; - -test('deprecated', t => { - t.true(rule.meta.deprecated); - t.deepEqual(rule.meta.replacedBy, ['unicorn/better-regex']); -});