jazelle/utils/execute-hook.js (19 lines of code) (raw):
// @flow
const {dirname} = require('path');
const {node} = require('./binary-paths.js');
const {exec} = require('./node-helpers.js');
/*::
type Env = {}
type ExecuteHook = (?string, string, ?Env) => Promise<void>;
*/
const executeHook /*: ExecuteHook */ = async (hook, root, env = {}) => {
const nodePath = dirname(node);
if (typeof hook === 'string') {
// prioritize hermetic Node version over system version
const options = {
env: {
...process.env,
PATH: `${nodePath}:${String(process.env.PATH)}`,
...env,
},
cwd: root,
};
const stdio = [process.stdout, process.stderr];
await exec(hook, options, stdio);
}
};
module.exports = {executeHook};