mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-09-20 15:37:46 +03:00
61 lines
1.4 KiB
JavaScript
61 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const path = require('path');
|
|
const { spawn } = require('child_process');
|
|
const process = require('process');
|
|
|
|
const CONFIG = require('../config');
|
|
|
|
module.exports = async function() {
|
|
return new Promise((resolve, reject) => {
|
|
const eslintArgs = ['--cache', '--format', 'json'];
|
|
|
|
if (process.argv.includes('--fix')) {
|
|
eslintArgs.push('--fix');
|
|
}
|
|
|
|
const eslintBinary = process.platform === 'win32' ? 'eslint.cmd' : 'eslint';
|
|
const eslint = spawn(
|
|
path.join('script', 'node_modules', '.bin', eslintBinary),
|
|
[...eslintArgs, '.'],
|
|
{ cwd: CONFIG.repositoryRootPath }
|
|
);
|
|
|
|
let output = '';
|
|
let errorOutput = '';
|
|
eslint.stdout.on('data', data => {
|
|
output += data.toString();
|
|
});
|
|
|
|
eslint.stderr.on('data', data => {
|
|
errorOutput += data.toString();
|
|
});
|
|
|
|
eslint.on('error', error => reject(error));
|
|
eslint.on('close', exitCode => {
|
|
const errors = [];
|
|
let files;
|
|
|
|
try {
|
|
files = JSON.parse(output);
|
|
} catch (_) {
|
|
reject(errorOutput);
|
|
return;
|
|
}
|
|
|
|
for (const file of files) {
|
|
for (const error of file.messages) {
|
|
errors.push({
|
|
path: file.filePath,
|
|
message: error.message,
|
|
lineNumber: error.line,
|
|
rule: error.ruleId
|
|
});
|
|
}
|
|
}
|
|
|
|
resolve(errors);
|
|
});
|
|
});
|
|
};
|