eslint-remote-tester
Version:
Tool for running ESLint on multiple repositories
22 lines (21 loc) • 777 B
JavaScript
import { useLayoutEffect, useState } from 'react';
import { useApp } from 'ink';
import { ResultsStore } from '../../file-client/index.js';
/**
* Hook for exiting application and process after one final re-render
*/
export function useExitAfterRender() {
const [hasRendered, setRendered] = useState(false);
const { exit } = useApp();
// Fire final re-render cycle
// Some terminals do not re-run second useEffect. useLayoutEffect works.
useLayoutEffect(() => setRendered(true), []);
useLayoutEffect(() => {
if (hasRendered) {
const results = ResultsStore.getResults();
const exitCode = results.length > 0 ? 1 : undefined;
exit();
process.exit(exitCode);
}
}, [hasRendered, exit]);
}