Files
atom/script/lib/lint-java-script-paths.js
2019-05-13 17:48:11 +02:00

61 lines
1.3 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)
})
})
}