pulsar/script/lib/lint-java-script-paths.js
2019-05-31 18:33:56 +02:00

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);
});
});
};