@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
JavaScript
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