@better-builds/lets-version
Version:
A package that reads your conventional commits and git history and recommends (or applies) a SemVer version bump for you
37 lines (36 loc) • 1.35 kB
JavaScript
import { spawn } from 'node:child_process';
export function exec(command, { verbose = process.env.LETS_VERSION_VERBOSE === 'true' || false, ...opts }) {
if (verbose)
console.info('Executing', command, 'in', opts.cwd);
const [cmd, ...args] = command.split(/\s+/);
if (!cmd)
throw new Error('unable to spawn because no command was given');
return new Promise((resolve, reject) => {
const child = spawn(cmd, args, opts);
let errBuffer = Buffer.alloc(0);
let stdoutBuffer = Buffer.alloc(0);
let error = null;
child.on('error', err => {
error = err;
});
child.stderr?.on('data', data => {
errBuffer = Buffer.concat([errBuffer, data]);
});
child.stdout?.on('data', data => {
stdoutBuffer = Buffer.concat([stdoutBuffer, data]);
});
child.once('exit', code => {
if (code) {
const errMsg = errBuffer.toString('utf-8');
if (opts.stdio === 'inherit')
console.error(errMsg);
if (error) {
return reject(error);
}
return reject(new Error(errMsg));
}
const output = stdoutBuffer.toString('utf-8');
return resolve(output);
});
});
}