UNPKG

@riddance/env

Version:

38 lines 5.74 kB
#!/usr/bin/env node import { readFile, writeFile } from 'node:fs/promises'; import { join, resolve } from 'node:path'; import { getHash, getTag, getTags, isClean } from '../lib/git.js'; const p = resolve(process.cwd(), process.argv[2] ?? '.'); const packageJson = JSON.parse(await readFile(join(p, 'package.json'), 'utf-8')); async function assertClean() { if (packageJson.gitHead) { const { gitHead, ...headless } = packageJson; await writeFile(join(p, 'package.json'), JSON.stringify(headless, undefined, ' ') + '\n', 'utf-8'); } if (!(await isClean(p))) { throw new Error('Build does not have a git hash.'); } } async function assertUntagged() { const [t, ts] = await Promise.all([getTag(p), getTags(p)]); const { version } = packageJson; if (t === `v${version}`) { return; // Since we're clean } if (ts.includes(`v${version}`)) { throw new Error('Version already built. Please update package.json.'); } } try { await Promise.all([assertClean(), assertUntagged()]); const gitHead = await getHash(p); await writeFile(join(p, 'package.json'), JSON.stringify({ ...packageJson, gitHead, }, undefined, ' '), 'utf-8'); } catch (e) { console.error(e.message); process.exit(1); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcHVibGlzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXB1Ymxpc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVqRSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUE7QUFDeEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUc5RSxDQUFBO0FBRUQsS0FBSyxVQUFVLFdBQVc7SUFDdEIsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLFdBQVcsQ0FBQTtRQUM1QyxNQUFNLFNBQVMsQ0FDWCxJQUFJLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUNoRCxPQUFPLENBQ1YsQ0FBQTtJQUNMLENBQUM7SUFDRCxJQUFJLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO0lBQ3RELENBQUM7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLGNBQWM7SUFDekIsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsV0FBVyxDQUFBO0lBRS9CLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN0QixPQUFNLENBQUMsb0JBQW9CO0lBQy9CLENBQUM7SUFDRCxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7QUFDTCxDQUFDO0FBRUQsSUFBSSxDQUFDO0lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3BELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hDLE1BQU0sU0FBUyxDQUNYLElBQUksQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQ1Y7UUFDSSxHQUFHLFdBQVc7UUFDZCxPQUFPO0tBQ1YsRUFDRCxTQUFTLEVBQ1QsSUFBSSxDQUNQLEVBQ0QsT0FBTyxDQUNWLENBQUE7QUFDTCxDQUFDO0FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNULE9BQU8sQ0FBQyxLQUFLLENBQUUsQ0FBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGdldEhhc2gsIGdldFRhZywgZ2V0VGFncywgaXNDbGVhbiB9IGZyb20gJy4uL2xpYi9naXQuanMnXG5cbmNvbnN0IHAgPSByZXNvbHZlKHByb2Nlc3MuY3dkKCksIHByb2Nlc3MuYXJndlsyXSA/PyAnLicpXG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoam9pbihwLCAncGFja2FnZS5qc29uJyksICd1dGYtOCcpKSBhcyB7XG4gICAgdmVyc2lvbjogc3RyaW5nXG4gICAgZ2l0SGVhZD86IHN0cmluZ1xufVxuXG5hc3luYyBmdW5jdGlvbiBhc3NlcnRDbGVhbigpIHtcbiAgICBpZiAocGFja2FnZUpzb24uZ2l0SGVhZCkge1xuICAgICAgICBjb25zdCB7IGdpdEhlYWQsIC4uLmhlYWRsZXNzIH0gPSBwYWNrYWdlSnNvblxuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICAgICAgICBqb2luKHAsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGhlYWRsZXNzLCB1bmRlZmluZWQsICcgICcpICsgJ1xcbicsXG4gICAgICAgICAgICAndXRmLTgnLFxuICAgICAgICApXG4gICAgfVxuICAgIGlmICghKGF3YWl0IGlzQ2xlYW4ocCkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQnVpbGQgZG9lcyBub3QgaGF2ZSBhIGdpdCBoYXNoLicpXG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBhc3NlcnRVbnRhZ2dlZCgpIHtcbiAgICBjb25zdCBbdCwgdHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW2dldFRhZyhwKSwgZ2V0VGFncyhwKV0pXG4gICAgY29uc3QgeyB2ZXJzaW9uIH0gPSBwYWNrYWdlSnNvblxuXG4gICAgaWYgKHQgPT09IGB2JHt2ZXJzaW9ufWApIHtcbiAgICAgICAgcmV0dXJuIC8vIFNpbmNlIHdlJ3JlIGNsZWFuXG4gICAgfVxuICAgIGlmICh0cy5pbmNsdWRlcyhgdiR7dmVyc2lvbn1gKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZlcnNpb24gYWxyZWFkeSBidWlsdC4gUGxlYXNlIHVwZGF0ZSBwYWNrYWdlLmpzb24uJylcbiAgICB9XG59XG5cbnRyeSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW2Fzc2VydENsZWFuKCksIGFzc2VydFVudGFnZ2VkKCldKVxuICAgIGNvbnN0IGdpdEhlYWQgPSBhd2FpdCBnZXRIYXNoKHApXG4gICAgYXdhaXQgd3JpdGVGaWxlKFxuICAgICAgICBqb2luKHAsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4ucGFja2FnZUpzb24sXG4gICAgICAgICAgICAgICAgZ2l0SGVhZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAnICAnLFxuICAgICAgICApLFxuICAgICAgICAndXRmLTgnLFxuICAgIClcbn0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKChlIGFzIHsgbWVzc2FnZTogc3RyaW5nIH0pLm1lc3NhZ2UpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG59XG4iXX0=