eslint-remote-tester
Version:
Tool for running ESLint on multiple repositories
45 lines (44 loc) • 1.63 kB
JavaScript
import config from '../config/index.js';
import { ResultsStore, compareResults, writeComparisonResults, } from '../file-client/index.js';
import { RESULT_COMPARISON_FINISHED } from './log-templates.js';
/**
* Callback invoked once scan is complete and application is about to exit
*/
export default async function onExit(scannedRepositories) {
const messages = [];
const errors = [];
const results = ResultsStore.getResults();
let comparisonResults = null;
if (config.compare) {
try {
comparisonResults = await compareResults(results);
ResultsStore.setComparisonResults(comparisonResults);
messages.push({
content: RESULT_COMPARISON_FINISHED(comparisonResults.added.length, comparisonResults.removed.length),
color: 'green',
level: 'verbose',
});
await writeComparisonResults(comparisonResults, results);
}
catch (e) {
errors.push('Error occurred while generating comparison results');
errors.push(e.stack);
}
}
if (config.onComplete) {
try {
const onCompletePromise = config.onComplete(results, comparisonResults, scannedRepositories);
if (onCompletePromise instanceof Promise) {
await onCompletePromise;
}
}
catch (e) {
errors.push('Error occurred while calling onComplete callback');
errors.push(e.stack);
}
}
if (errors.length) {
throw new Error(errors.filter(Boolean).join('\n'));
}
return messages;
}