@riddance/host
Version:
33 lines • 3.91 kB
JavaScript
import { exec } from 'node:child_process';
export async function getHash(path) {
try {
const [clean, hash = ''] = await Promise.all([isClean(path), getCommittedHash(path)]);
if (clean) {
return hash.slice(0, 7);
}
return hash.slice(0, 7) + '+';
}
catch {
return undefined;
}
}
async function isClean(path) {
const changes = await execAsync(path, 'git status --short');
return changes.length === 0;
}
async function getCommittedHash(path) {
const [long] = await execAsync(path, 'git rev-parse HEAD');
return long;
}
function execAsync(path, cmd) {
return new Promise((resolve, reject) => {
exec(cmd, { cwd: path }, (err, stdout) => {
if (err) {
reject(err);
return;
}
resolve(stdout.split('\n').slice(0, -1));
});
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUV6QyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxJQUFZO0lBQ3RDLElBQUksQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDckYsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBQ2pDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxPQUFPLFNBQVMsQ0FBQTtJQUNwQixDQUFDO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxPQUFPLENBQUMsSUFBWTtJQUMvQixNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtJQUMzRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFBO0FBQy9CLENBQUM7QUFFRCxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsSUFBWTtJQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUE7SUFDMUQsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDeEMsT0FBTyxJQUFJLE9BQU8sQ0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM3QyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNYLE9BQU07WUFDVixDQUFDO1lBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0SGFzaChwYXRoOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBbY2xlYW4sIGhhc2ggPSAnJ10gPSBhd2FpdCBQcm9taXNlLmFsbChbaXNDbGVhbihwYXRoKSwgZ2V0Q29tbWl0dGVkSGFzaChwYXRoKV0pXG4gICAgICAgIGlmIChjbGVhbikge1xuICAgICAgICAgICAgcmV0dXJuIGhhc2guc2xpY2UoMCwgNylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzaC5zbGljZSgwLCA3KSArICcrJ1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpc0NsZWFuKHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGNoYW5nZXMgPSBhd2FpdCBleGVjQXN5bmMocGF0aCwgJ2dpdCBzdGF0dXMgLS1zaG9ydCcpXG4gICAgcmV0dXJuIGNoYW5nZXMubGVuZ3RoID09PSAwXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbW1pdHRlZEhhc2gocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgW2xvbmddID0gYXdhaXQgZXhlY0FzeW5jKHBhdGgsICdnaXQgcmV2LXBhcnNlIEhFQUQnKVxuICAgIHJldHVybiBsb25nXG59XG5cbmZ1bmN0aW9uIGV4ZWNBc3luYyhwYXRoOiBzdHJpbmcsIGNtZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZ1tdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGV4ZWMoY21kLCB7IGN3ZDogcGF0aCB9LCAoZXJyLCBzdGRvdXQpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShzdGRvdXQuc3BsaXQoJ1xcbicpLnNsaWNlKDAsIC0xKSlcbiAgICAgICAgfSlcbiAgICB9KVxufVxuIl19