in source/tools/cdk-integ-tools/lib/integ-helpers.ts [351:384]
function exec(commandLine: string[], options: { cwd?: string, json?: boolean, verbose?: boolean, env?: any } = { }): any {
const proc = spawnSync(commandLine[0], commandLine.slice(1), {
stdio: ['ignore', 'pipe', options.verbose ? 'inherit' : 'pipe'], // inherit STDERR in verbose mode
env: {
...process.env,
CDK_INTEG_MODE: '1',
...options.env,
},
cwd: options.cwd,
});
if (proc.error) { throw proc.error; }
if (proc.status !== 0) {
if (process.stderr) { // will be 'null' in verbose mode
process.stderr.write(proc.stderr);
}
throw new Error(`Command exited with ${proc.status ? `status ${proc.status}` : `signal ${proc.signal}`}`);
}
const output = proc.stdout.toString('utf-8').trim();
try {
if (options.json) {
if (output.length === 0) { return {}; }
return JSON.parse(output);
}
return output;
} catch (e) {
// eslint-disable-next-line no-console
console.error('Not JSON: ' + output);
throw new Error('Command output is not JSON');
}
}