@liara/cli
Version:
The command line interface for Liara
34 lines (33 loc) • 1.31 kB
JavaScript
import { exec } from 'node:child_process';
export default async function collectGitInfo(cwd, debug) {
const branch = await retrieveConfig('git rev-parse --abbrev-ref HEAD', cwd, debug);
const message = await retrieveConfig('git log --format="%B" -n 1 HEAD', cwd, debug);
const commit = await retrieveConfig('git rev-parse HEAD', cwd, debug);
const committedAt = await retrieveConfig('git log --format="%ct" -n 1 HEAD', cwd, debug);
const tags = await retrieveConfig('git tag --points-at', cwd, debug);
const remote = await retrieveConfig('git ls-remote --get-url', cwd, debug);
const author = {
email: await retrieveConfig('git log --format="%aE" -n 1 HEAD', cwd, debug),
name: await retrieveConfig('git log --format="%aN" -n 1 HEAD', cwd, debug),
};
return {
branch,
message,
commit,
committedAt,
remote,
author,
tags: (tags && tags.split('\n')) || [],
};
}
function retrieveConfig(command, cwd, debug) {
return new Promise((resolve) => {
exec(command, { cwd, windowsHide: true }, (err, stdout) => {
if (err) {
debug(err.message);
return resolve(null);
}
return resolve(stdout.toString().trim());
});
});
}