import { ChildProcess, SpawnSyncOptionsWithBufferEncoding, SpawnSyncReturns, spawnSync as rawSpawnSync } from "child_process"; export function check(result: SpawnSyncReturns) { if (result.error) throw result.error; if (result.status !== 0) { throw result.stderr; } return result; } export function checkedSpawnSync( command: string, args: readonly string[], options: SpawnSyncOptionsWithBufferEncoding, ): SpawnSyncReturns { return check(rawSpawnSync(command, args, options)); } export function promisifySpawn(p: T) { return new Promise((resolve, reject) => { p.on("error", err => reject(err)); p.on("close", number => { if (number != 0) return reject(number); resolve(p); }); }); }