import { spawn } from 'node:child_process';
export function runCommand(command, args = [], options = {}) {
return new Promise((resolve, reject) => {
const child = spawn(command, args, {
stdio: options.stdio ?? 'inherit',
cwd: options.cwd ?? process.cwd(),
env: { ...process.env, ...(options.env ?? {}) },
shell: options.shell ?? false,
});
child.on('error', (error) => {
reject(error);
});
child.on('exit', (code) => {
if (code === 0) {
resolve();
} else {
const err = new Error(
`${command} ${args.join(' ')} exited with code ${code}`,
);
err.code = code;
reject(err);
}
});
});
}