56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
/* eslint global-require: 0 */
|
|
|
|
const { CLIEngine } = require('eslint');
|
|
|
|
if (CLIEngine) {
|
|
/* eslint no-inner-declarations: 0 */
|
|
const assign = require('object.assign');
|
|
const entries = require('object.entries');
|
|
const whitespaceRules = require('./whitespaceRules');
|
|
|
|
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;
|
|
}
|
|
|
|
function onlyErrorOnRules(rulesToError, config) {
|
|
const errorsOnly = assign({}, config);
|
|
const cli = new CLIEngine({ baseConfig: config, useEslintrc: false });
|
|
const baseRules = cli.getConfigForFile(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;
|
|
}
|
|
|
|
module.exports = onlyErrorOnRules(whitespaceRules, baseConfig);
|
|
} else {
|
|
const path = require('path');
|
|
const { execSync } = require('child_process');
|
|
|
|
module.exports = JSON.parse(String(execSync(path.join(__dirname, 'whitespace-async.js'))));
|
|
}
|