@naturalcycles/ktlint
Version:
ktlint, conveniently published to npm registry
34 lines (33 loc) • 966 B
JavaScript
import { spawn } from 'node:child_process';
export function runCommand(command, args = [], opt = {}) {
console.log([command, ...args].join(' '));
const p = spawn([command, ...args].join(' '), {
stdio: 'inherit',
shell: true,
...opt,
});
p.on('close', code => {
if (code) {
console.log(`${command} exited with code ${code}`);
}
process.exit(code || 0);
});
}
/**
* Throws error on failure.
*/
export async function runCommandSafe(command, args = [], opt = {}) {
console.log([command, ...args].join(' '));
return await new Promise((resolve, reject) => {
const p = spawn([command, ...args].join(' '), {
stdio: 'inherit',
shell: true,
...opt,
});
p.on('close', code => {
if (!code)
return resolve();
reject(new Error(`${command} exited with code ${code}`));
});
});
}