strapi/scripts/eslintErrorsFormatter.js

54 lines
1.5 KiB
JavaScript
Raw Normal View History

2018-05-04 15:38:42 +02:00
const chalk = require('chalk');
2018-05-04 17:02:27 +02:00
const { blue, green, magenta, red, yellow } = chalk;
2018-05-04 15:38:42 +02:00
const eslintErrorsFormatter = data => {
const errors = data.split('\n\n');
const formattedErrors = errors.reduce((acc, curr, i) => {
if (curr.includes('warnings)') || curr.includes('warning)')) {
const summaryErrorArray = curr.split(' ');
const summaryError = `${red(summaryErrorArray[0])} ${green(
`${summaryErrorArray[1]} ${summaryErrorArray[2]}`,
)} ${summaryErrorArray.slice(3).join(' ')}`;
acc.push(summaryError);
} else {
const err = curr.split('\n').reduce((acc, c) => {
const error = c
.split(' ')
.reduce((acc, current, index) => {
let formattedError;
switch (index) {
case 0:
formattedError = blue(current);
break;
case 4:
formattedError = current === 'warning' ? green(current) : red(current);
break;
case c.split(' ').length - 1:
formattedError = yellow(current);
break;
default:
formattedError = current;
}
acc.push(formattedError);
return acc;
}, [])
.join(' ');
acc.push(error);
return acc;
}, []);
acc.push(err.join('\n'));
}
return acc;
}, []);
return formattedErrors.join('\n\n');
};
module.exports = eslintErrorsFormatter;