97 lines
2.4 KiB
JavaScript
97 lines
2.4 KiB
JavaScript
|
#!/usr/bin/env node
|
||
|
|
||
|
const assign = require('object.assign');
|
||
|
const entries = require('object.entries');
|
||
|
const { ESLint } = require('eslint');
|
||
|
|
||
|
const baseConfig = require('.');
|
||
|
|
||
|
const severities = ['off', 'warn', 'error'];
|
||
|
|
||
|
function getSeverity(ruleConfig) {
|
||
|
if (Array.isArray(ruleConfig)) {
|
||
|
return getSeverity(ruleConfig[0]);
|
||
|
}
|
||
|
if (typeof ruleConfig === 'number') {
|
||
|
return severities[ruleConfig];
|
||
|
}
|
||
|
return ruleConfig;
|
||
|
}
|
||
|
|
||
|
async function onlyErrorOnRules(rulesToError, config) {
|
||
|
const errorsOnly = assign({}, config);
|
||
|
const cli = new ESLint({
|
||
|
useEslintrc: false,
|
||
|
baseConfig: config
|
||
|
});
|
||
|
const baseRules = (await cli.calculateConfigForFile(require.resolve('./'))).rules;
|
||
|
|
||
|
entries(baseRules).forEach((rule) => {
|
||
|
const ruleName = rule[0];
|
||
|
const ruleConfig = rule[1];
|
||
|
const severity = getSeverity(ruleConfig);
|
||
|
|
||
|
if (rulesToError.indexOf(ruleName) === -1 && severity === 'error') {
|
||
|
if (Array.isArray(ruleConfig)) {
|
||
|
errorsOnly.rules[ruleName] = ['warn'].concat(ruleConfig.slice(1));
|
||
|
} else if (typeof ruleConfig === 'number') {
|
||
|
errorsOnly.rules[ruleName] = 1;
|
||
|
} else {
|
||
|
errorsOnly.rules[ruleName] = 'warn';
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
return errorsOnly;
|
||
|
}
|
||
|
|
||
|
onlyErrorOnRules([
|
||
|
'array-bracket-newline',
|
||
|
'array-bracket-spacing',
|
||
|
'array-element-newline',
|
||
|
'arrow-spacing',
|
||
|
'block-spacing',
|
||
|
'comma-spacing',
|
||
|
'computed-property-spacing',
|
||
|
'dot-location',
|
||
|
'eol-last',
|
||
|
'func-call-spacing',
|
||
|
'function-paren-newline',
|
||
|
'generator-star-spacing',
|
||
|
'implicit-arrow-linebreak',
|
||
|
'indent',
|
||
|
'key-spacing',
|
||
|
'keyword-spacing',
|
||
|
'line-comment-position',
|
||
|
'linebreak-style',
|
||
|
'multiline-ternary',
|
||
|
'newline-per-chained-call',
|
||
|
'no-irregular-whitespace',
|
||
|
'no-mixed-spaces-and-tabs',
|
||
|
'no-multi-spaces',
|
||
|
'no-regex-spaces',
|
||
|
'no-spaced-func',
|
||
|
'no-trailing-spaces',
|
||
|
'no-whitespace-before-property',
|
||
|
'nonblock-statement-body-position',
|
||
|
'object-curly-newline',
|
||
|
'object-curly-spacing',
|
||
|
'object-property-newline',
|
||
|
'one-var-declaration-per-line',
|
||
|
'operator-linebreak',
|
||
|
'padded-blocks',
|
||
|
'padding-line-between-statements',
|
||
|
'rest-spread-spacing',
|
||
|
'semi-spacing',
|
||
|
'semi-style',
|
||
|
'space-before-blocks',
|
||
|
'space-before-function-paren',
|
||
|
'space-in-parens',
|
||
|
'space-infix-ops',
|
||
|
'space-unary-ops',
|
||
|
'spaced-comment',
|
||
|
'switch-colon-spacing',
|
||
|
'template-tag-spacing',
|
||
|
'import/newline-after-import',
|
||
|
], baseConfig).then((config) => console.log(JSON.stringify(config)));
|