UNPKG

1.39 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3const assign = require('object.assign');
4const entries = require('object.entries');
5const { ESLint } = require('eslint');
6
7const baseConfig = require('.');
8const whitespaceRules = require('./whitespaceRules');
9
10const severities = ['off', 'warn', 'error'];
11
12function getSeverity(ruleConfig) {
13 if (Array.isArray(ruleConfig)) {
14 return getSeverity(ruleConfig[0]);
15 }
16 if (typeof ruleConfig === 'number') {
17 return severities[ruleConfig];
18 }
19 return ruleConfig;
20}
21
22async function onlyErrorOnRules(rulesToError, config) {
23 const errorsOnly = assign({}, config);
24 const cli = new ESLint({
25 useEslintrc: false,
26 baseConfig: config
27 });
28 const baseRules = (await cli.calculateConfigForFile(require.resolve('./'))).rules;
29
30 entries(baseRules).forEach((rule) => {
31 const ruleName = rule[0];
32 const ruleConfig = rule[1];
33 const severity = getSeverity(ruleConfig);
34
35 if (rulesToError.indexOf(ruleName) === -1 && severity === 'error') {
36 if (Array.isArray(ruleConfig)) {
37 errorsOnly.rules[ruleName] = ['warn'].concat(ruleConfig.slice(1));
38 } else if (typeof ruleConfig === 'number') {
39 errorsOnly.rules[ruleName] = 1;
40 } else {
41 errorsOnly.rules[ruleName] = 'warn';
42 }
43 }
44 });
45
46 return errorsOnly;
47}
48
49onlyErrorOnRules(whitespaceRules, baseConfig).then((config) => console.log(JSON.stringify(config)));