@riddance/env
Version:
54 lines • 6.26 kB
JavaScript
import { exec } from 'node:child_process';
export async function isClean(path) {
const changes = await execAsync(path, 'git status --short');
return changes.length === 0;
}
export async function isCodeClean(path) {
try {
const changes = await execAsync(path, 'git status --short');
return changes.every(l => !l.endsWith('.ts'));
}
catch {
return false;
}
}
export async function getHash(path) {
const [long] = await execAsync(path, 'git rev-parse HEAD');
return long;
}
export async function tag(path, t) {
return await execAsync(path, `git tag "${t}"`);
}
export async function getTag(path) {
try {
const [t] = await execAsync(path, 'git describe --exact-match --tags HEAD');
return t;
}
catch (e) {
if (e.message?.includes('fatal: no tag exactly matches ')) {
return undefined;
}
throw e;
}
}
export async function getTags(path) {
return await execAsync(path, 'git tag --list');
}
export async function push(path) {
return await execAsync(path, 'git push');
}
export async function pushTags(path) {
return await execAsync(path, 'git push --tags');
}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUV6QyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxJQUFZO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBQzNELE9BQU8sT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUE7QUFDL0IsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUFDLElBQVk7SUFDMUMsSUFBSSxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUE7UUFDM0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUMsSUFBWTtJQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUE7SUFDMUQsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxHQUFHLENBQUMsSUFBWSxFQUFFLENBQVM7SUFDN0MsT0FBTyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2xELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxJQUFZO0lBQ3JDLElBQUksQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsd0NBQXdDLENBQUMsQ0FBQTtRQUMzRSxPQUFPLENBQUMsQ0FBQTtJQUNaLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsSUFBSyxDQUEwQixDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsZ0NBQWdDLENBQUMsRUFBRSxDQUFDO1lBQ2xGLE9BQU8sU0FBUyxDQUFBO1FBQ3BCLENBQUM7UUFDRCxNQUFNLENBQUMsQ0FBQTtJQUNYLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUMsSUFBWTtJQUN0QyxPQUFPLE1BQU0sU0FBUyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ2xELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLElBQUksQ0FBQyxJQUFZO0lBQ25DLE9BQU8sTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0FBQzVDLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVEsQ0FBQyxJQUFZO0lBQ3ZDLE9BQU8sTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUE7QUFDbkQsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLElBQVksRUFBRSxHQUFXO0lBQ3hDLE9BQU8sSUFBSSxPQUFPLENBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDN0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDWCxPQUFNO1lBQ1YsQ0FBQztZQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzVDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzQ2xlYW4ocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2hhbmdlcyA9IGF3YWl0IGV4ZWNBc3luYyhwYXRoLCAnZ2l0IHN0YXR1cyAtLXNob3J0JylcbiAgICByZXR1cm4gY2hhbmdlcy5sZW5ndGggPT09IDBcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzQ29kZUNsZWFuKHBhdGg6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZXMgPSBhd2FpdCBleGVjQXN5bmMocGF0aCwgJ2dpdCBzdGF0dXMgLS1zaG9ydCcpXG4gICAgICAgIHJldHVybiBjaGFuZ2VzLmV2ZXJ5KGwgPT4gIWwuZW5kc1dpdGgoJy50cycpKVxuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRIYXNoKHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IFtsb25nXSA9IGF3YWl0IGV4ZWNBc3luYyhwYXRoLCAnZ2l0IHJldi1wYXJzZSBIRUFEJylcbiAgICByZXR1cm4gbG9uZ1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGFnKHBhdGg6IHN0cmluZywgdDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGF3YWl0IGV4ZWNBc3luYyhwYXRoLCBgZ2l0IHRhZyBcIiR7dH1cImApXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUYWcocGF0aDogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgW3RdID0gYXdhaXQgZXhlY0FzeW5jKHBhdGgsICdnaXQgZGVzY3JpYmUgLS1leGFjdC1tYXRjaCAtLXRhZ3MgSEVBRCcpXG4gICAgICAgIHJldHVybiB0XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKGUgYXMgeyBtZXNzYWdlPzogc3RyaW5nIH0pLm1lc3NhZ2U/LmluY2x1ZGVzKCdmYXRhbDogbm8gdGFnIGV4YWN0bHkgbWF0Y2hlcyAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVcbiAgICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRUYWdzKHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBhd2FpdCBleGVjQXN5bmMocGF0aCwgJ2dpdCB0YWcgLS1saXN0Jylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHB1c2gocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGF3YWl0IGV4ZWNBc3luYyhwYXRoLCAnZ2l0IHB1c2gnKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVzaFRhZ3MocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGF3YWl0IGV4ZWNBc3luYyhwYXRoLCAnZ2l0IHB1c2ggLS10YWdzJylcbn1cblxuZnVuY3Rpb24gZXhlY0FzeW5jKHBhdGg6IHN0cmluZywgY21kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgZXhlYyhjbWQsIHsgY3dkOiBwYXRoIH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHN0ZG91dC5zcGxpdCgnXFxuJykuc2xpY2UoMCwgLTEpKVxuICAgICAgICB9KVxuICAgIH0pXG59XG4iXX0=