UNPKG

@riddance/env

Version:

Too much code slows you down, creates risks, increases maintainability burdens, confuses AI. So let's commit less of it.

49 lines 7.38 kB
import { readFile } from 'node:fs/promises'; import { join } from 'node:path'; import { setup } from '../lib/env.js'; import { formatFiles } from '../lib/formatter.js'; import { isCodeClean } from '../lib/git.js'; import { fixLints } from '../lib/linter.js'; const targetDir = process.argv[2] ?? process.env.INIT_CWD; if (!targetDir) { throw new Error('Please specify target directory.'); } const { isAlreadyInstalled, myself } = await state(targetDir); const existing = await setup(targetDir, !isAlreadyInstalled, myself); if (existing.length !== 0) { console.error('Riddance will take ownership of and overwrite the following files:'); console.error(existing.map(f => ` ./${f}`).join('\n')); console.error('Please remove (and stage the removal) before proceeding.'); process.exit(1); } if (isAlreadyInstalled) { if (await isCodeClean(targetDir)) { const fixed = await fixLints(targetDir, '**/*.ts'); if (fixed.length !== 0) { await formatFiles(targetDir, fixed); console.error('Fixes applied, please review carefully.'); } } } async function state(path) { try { const packageLockJson = JSON.parse(await readFile(join(path, 'package-lock.json'), 'utf-8')); return { isAlreadyInstalled: !!packageLockJson.packages?.['node_modules/@riddance/env'], myself: packageLockJson.name === '@riddance/env', }; } catch { try { const packageJson = JSON.parse(await readFile(join(path, 'package.json'), 'utf-8')); return { isAlreadyInstalled: !!packageJson.devDependencies?.['@riddance/env'], myself: packageJson.name === '@riddance/env', }; } catch { return { isAlreadyInstalled: false, myself: false }; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDaEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFM0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQTtBQUV6RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDYixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUE7QUFDdkQsQ0FBQztBQUVELE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUM3RCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUNwRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFBO0lBQ25GLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUN2RCxPQUFPLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUE7SUFDekUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNuQixDQUFDO0FBRUQsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLElBQUksTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDbEQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUE7UUFDNUQsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLEtBQUssQ0FBQyxJQUFZO0lBQzdCLElBQUksQ0FBQztRQUNELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzlCLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FJM0QsQ0FBQTtRQUVELE9BQU87WUFDSCxrQkFBa0IsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLDRCQUE0QixDQUFDO1lBQzlFLE1BQU0sRUFBRSxlQUFlLENBQUMsSUFBSSxLQUFLLGVBQWU7U0FDbkQsQ0FBQTtJQUNMLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxJQUFJLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBR2pGLENBQUE7WUFFRCxPQUFPO2dCQUNILGtCQUFrQixFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUNwRSxNQUFNLEVBQUUsV0FBVyxDQUFDLElBQUksS0FBSyxlQUFlO2FBQy9DLENBQUE7UUFDTCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ0wsT0FBTyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUE7UUFDdkQsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHNldHVwIH0gZnJvbSAnLi4vbGliL2Vudi5qcydcbmltcG9ydCB7IGZvcm1hdEZpbGVzIH0gZnJvbSAnLi4vbGliL2Zvcm1hdHRlci5qcydcbmltcG9ydCB7IGlzQ29kZUNsZWFuIH0gZnJvbSAnLi4vbGliL2dpdC5qcydcbmltcG9ydCB7IGZpeExpbnRzIH0gZnJvbSAnLi4vbGliL2xpbnRlci5qcydcblxuY29uc3QgdGFyZ2V0RGlyID0gcHJvY2Vzcy5hcmd2WzJdID8/IHByb2Nlc3MuZW52LklOSVRfQ1dEXG5cbmlmICghdGFyZ2V0RGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2Ugc3BlY2lmeSB0YXJnZXQgZGlyZWN0b3J5LicpXG59XG5cbmNvbnN0IHsgaXNBbHJlYWR5SW5zdGFsbGVkLCBteXNlbGYgfSA9IGF3YWl0IHN0YXRlKHRhcmdldERpcilcbmNvbnN0IGV4aXN0aW5nID0gYXdhaXQgc2V0dXAodGFyZ2V0RGlyLCAhaXNBbHJlYWR5SW5zdGFsbGVkLCBteXNlbGYpXG5pZiAoZXhpc3RpbmcubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc29sZS5lcnJvcignUmlkZGFuY2Ugd2lsbCB0YWtlIG93bmVyc2hpcCBvZiBhbmQgb3ZlcndyaXRlIHRoZSBmb2xsb3dpbmcgZmlsZXM6JylcbiAgICBjb25zb2xlLmVycm9yKGV4aXN0aW5nLm1hcChmID0+IGAgIC4vJHtmfWApLmpvaW4oJ1xcbicpKVxuICAgIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSByZW1vdmUgKGFuZCBzdGFnZSB0aGUgcmVtb3ZhbCkgYmVmb3JlIHByb2NlZWRpbmcuJylcbiAgICBwcm9jZXNzLmV4aXQoMSlcbn1cblxuaWYgKGlzQWxyZWFkeUluc3RhbGxlZCkge1xuICAgIGlmIChhd2FpdCBpc0NvZGVDbGVhbih0YXJnZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IGZpeGVkID0gYXdhaXQgZml4TGludHModGFyZ2V0RGlyLCAnKiovKi50cycpXG4gICAgICAgIGlmIChmaXhlZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGF3YWl0IGZvcm1hdEZpbGVzKHRhcmdldERpciwgZml4ZWQpXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGaXhlcyBhcHBsaWVkLCBwbGVhc2UgcmV2aWV3IGNhcmVmdWxseS4nKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzdGF0ZShwYXRoOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBwYWNrYWdlTG9ja0pzb24gPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgYXdhaXQgcmVhZEZpbGUoam9pbihwYXRoLCAncGFja2FnZS1sb2NrLmpzb24nKSwgJ3V0Zi04JyksXG4gICAgICAgICkgYXMge1xuICAgICAgICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgICAgICAgcGFja2FnZXM/OiB7ICdub2RlX21vZHVsZXMvQHJpZGRhbmNlL2Vudic/OiB1bmtub3duIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc0FscmVhZHlJbnN0YWxsZWQ6ICEhcGFja2FnZUxvY2tKc29uLnBhY2thZ2VzPy5bJ25vZGVfbW9kdWxlcy9AcmlkZGFuY2UvZW52J10sXG4gICAgICAgICAgICBteXNlbGY6IHBhY2thZ2VMb2NrSnNvbi5uYW1lID09PSAnQHJpZGRhbmNlL2VudicsXG4gICAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShqb2luKHBhdGgsICdwYWNrYWdlLmpzb24nKSwgJ3V0Zi04JykpIGFzIHtcbiAgICAgICAgICAgICAgICBuYW1lPzogc3RyaW5nXG4gICAgICAgICAgICAgICAgZGV2RGVwZW5kZW5jaWVzPzogeyAnQHJpZGRhbmNlL2Vudic/OiBzdHJpbmcgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlzQWxyZWFkeUluc3RhbGxlZDogISFwYWNrYWdlSnNvbi5kZXZEZXBlbmRlbmNpZXM/LlsnQHJpZGRhbmNlL2VudiddLFxuICAgICAgICAgICAgICAgIG15c2VsZjogcGFja2FnZUpzb24ubmFtZSA9PT0gJ0ByaWRkYW5jZS9lbnYnLFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiB7IGlzQWxyZWFkeUluc3RhbGxlZDogZmFsc2UsIG15c2VsZjogZmFsc2UgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19