/** * @fileOverview There is a compatibility problem between eslint and arcanist. * ESLint returns a non-zero code on exit if there are any lint errors * in the file. But `arc` regex liniters expect to only get an * non-zero exit code on true errors (e.g. eslint config errors). * * So we use this file and the ESLint API to build a version that * only returns non-zero on actual errors (which will be unhandled * exceptions, so we don't actually need to do anything to achieve) */ const CLIEngine = require('eslint').CLIEngine; const cli = new CLIEngine(); /** * Get the file to lint from the command line. The command line is always * argv[0] - node exe * argv[1] - this script * argv[2] - the file passed on the command line */ if (process.argv.length !== 3) { throw new Error('Must pass exactly 1 file on the command line'); } const filename = process.argv[2]; // Lint the file passed in const report = cli.executeOnFiles([filename]); // Get the compact formatter const formatter = cli.getFormatter('compact'); // Output to stdout so it can be picked up by the arcanist regex process.stdout.write(formatter(report.results)); // Allow the program to exit normally, which will return code 0