unixFormatter.mjs 919 B

1234567891011121314151617181920212223242526272829303132
  1. import calcSeverityCounts from './calcSeverityCounts.mjs';
  2. import pluralize from '../utils/pluralize.mjs';
  3. import preprocessWarnings from './preprocessWarnings.mjs';
  4. /**
  5. * @type {import('stylelint').Formatter}
  6. */
  7. export default function unixFormatter(results) {
  8. const counts = { error: 0, warning: 0 };
  9. const lines = results.flatMap((result) => {
  10. preprocessWarnings(result);
  11. return result.warnings.map((warning) => {
  12. calcSeverityCounts(warning.severity, counts);
  13. return (
  14. `${result.source}:${warning.line}:${warning.column}: ` +
  15. `${warning.text} [${warning.severity}]`
  16. );
  17. });
  18. });
  19. const total = lines.length;
  20. let output = lines.join('\n');
  21. if (total > 0) {
  22. output += `\n\n${total} ${pluralize('problem', total)}`;
  23. output += ` (${counts.error} ${pluralize('error', counts.error)}`;
  24. output += `, ${counts.warning} ${pluralize('warning', counts.warning)})\n`;
  25. }
  26. return output;
  27. }