UNPKG

@riddance/env

Version:

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

83 lines 11.4 kB
#!/usr/bin/env node import { getSource, load } from '../lib/changes.js'; import { sync } from '../lib/chrono.js'; import { ensureUnlinked } from '../lib/fs.js'; import { signaled } from '../lib/reporter.js'; import { isSpellingDictionaryFile, spelling } from '../lib/spelling.js'; import { watch } from './lib/compiler.js'; import { consoleReporter } from './lib/console-reporter.js'; let watcher; let lastInput = []; const cwd = process.cwd(); const changes = await load(cwd); function start(preCompileSuccess) { if (preCompileSuccess === undefined) { process.exit(0); } let lastGood = preCompileSuccess; watcher = watch(consoleReporter, cwd, isOutput, async (success, reload, inputFiles, outputFiles, signal) => { if (reload || inputFiles.includes('package.json') || inputFiles.includes('package-lock.json')) { await installAndRestart(); return; } const reporter = signaled(consoleReporter, signal); if (!preCompileSuccess) { reporter.status('⚠️ Issues found 👆'); reporter.done(); return; } if (isSpellingDictionaryFile(inputFiles)) { if ((await spelling(reporter, cwd, getSource(lastInput), signal)) && lastGood) { reporter.status('🚀 All good 👌'); await changes.stageComplete('spelling'); } else { reporter.status('⚠️ Issues found 👆'); lastGood = false; } reporter.done(); return; } lastInput = inputFiles; await cleanUpRenames(outputFiles); if (await changes.postCompile(consoleReporter, cwd, inputFiles, Promise.resolve(success ? outputFiles : undefined), signal)) { reporter.status('🚀 All good 👌'); lastGood = true; } else { reporter.status('⚠️ Issues found 👆'); lastGood = false; } reporter.done(); }); } let createdFiles; async function cleanUpRenames(outputFiles) { if (!outputFiles) { return; } if (!createdFiles) { createdFiles = [...outputFiles]; return; } const gone = createdFiles.filter(created => !outputFiles.includes(created)); createdFiles = [...outputFiles]; await Promise.all(gone.map(ensureUnlinked)); } function isOutput(file) { if (!createdFiles) { return false; } return createdFiles.includes(file); } async function installAndRestart() { watcher.close(); await changes.clearStages(); const preCompileSuccess = await changes.preCompile(consoleReporter, cwd); start(preCompileSuccess); } const [preCompileSuccess] = await Promise.all([changes.preCompile(consoleReporter, cwd), sync()]); start(preCompileSuccess); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3YXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFFM0QsSUFBSSxPQUE4QixDQUFBO0FBQ2xDLElBQUksU0FBUyxHQUFhLEVBQUUsQ0FBQTtBQUU1QixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7QUFFekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFFL0IsU0FBUyxLQUFLLENBQUMsaUJBQXNDO0lBQ2pELElBQUksaUJBQWlCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNuQixDQUFDO0lBRUQsSUFBSSxRQUFRLEdBQUcsaUJBQWlCLENBQUE7SUFDaEMsT0FBTyxHQUFHLEtBQUssQ0FDWCxlQUFlLEVBQ2YsR0FBRyxFQUNILFFBQVEsRUFDUixLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3ZELElBQ0ksTUFBTTtZQUNOLFVBQVUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQ25DLFVBQVUsQ0FB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QUFPLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUN4RSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtBQUM1QixDQUFDO0FBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ2pHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBnZXRTb3VyY2UsIGxvYWQgfSBmcm9tICcuLi9saWIvY2hhbmdlcy5qcydcbmltcG9ydCB7IHN5bmMgfSBmcm9tICcuLi9saWIvY2hyb25vLmpzJ1xuaW1wb3J0IHsgZW5zdXJlVW5saW5rZWQgfSBmcm9tICcuLi9saWIvZnMuanMnXG5pbXBvcnQgeyBzaWduYWxlZCB9IGZyb20gJy4uL2xpYi9yZXBvcnRlci5qcydcbmltcG9ydCB7IGlzU3BlbGxpbmdEaWN0aW9uYXJ5RmlsZSwgc3BlbGxpbmcgfSBmcm9tICcuLi9saWIvc3BlbGxpbmcuanMnXG5pbXBvcnQgeyB3YXRjaCB9IGZyb20gJy4vbGliL2NvbXBpbGVyLmpzJ1xuaW1wb3J0IHsgY29uc29sZVJlcG9ydGVyIH0gZnJvbSAnLi9saWIvY29uc29sZS1yZXBvcnRlci5qcydcblxubGV0IHdhdGNoZXI6IHsgY2xvc2U6ICgpID0+IHZvaWQgfVxubGV0IGxhc3RJbnB1dDogc3RyaW5nW10gPSBbXVxuXG5jb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpXG5cbmNvbnN0IGNoYW5nZXMgPSBhd2FpdCBsb2FkKGN3ZClcblxuZnVuY3Rpb24gc3RhcnQocHJlQ29tcGlsZVN1Y2Nlc3M6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAocHJlQ29tcGlsZVN1Y2Nlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9jZXNzLmV4aXQoMClcbiAgICB9XG5cbiAgICBsZXQgbGFzdEdvb2QgPSBwcmVDb21waWxlU3VjY2Vzc1xuICAgIHdhdGNoZXIgPSB3YXRjaChcbiAgICAgICAgY29uc29sZVJlcG9ydGVyLFxuICAgICAgICBjd2QsXG4gICAgICAgIGlzT3V0cHV0LFxuICAgICAgICBhc3luYyAoc3VjY2VzcywgcmVsb2FkLCBpbnB1dEZpbGVzLCBvdXRwdXRGaWxlcywgc2lnbmFsKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcmVsb2FkIHx8XG4gICAgICAgICAgICAgICAgaW5wdXRGaWxlcy5pbmNsdWRlcygncGFja2FnZS5qc29uJykgfHxcbiAgICAgICAgICAgICAgICBpbnB1dEZpbGVzLmluY2x1ZGVzKCdwYWNrYWdlLWxvY2suanNvbicpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBpbnN0YWxsQW5kUmVzdGFydCgpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXBvcnRlciA9IHNpZ25hbGVkKGNvbnNvbGVSZXBvcnRlciwgc2lnbmFsKVxuICAgICAgICAgICAgaWYgKCFwcmVDb21waWxlU3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHJlcG9ydGVyLnN0YXR1cygn4pqg77iPICBJc3N1ZXMgZm91bmQg8J+RhicpXG4gICAgICAgICAgICAgICAgcmVwb3J0ZXIuZG9uZSgpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTcGVsbGluZ0RpY3Rpb25hcnlGaWxlKGlucHV0RmlsZXMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKChhd2FpdCBzcGVsbGluZyhyZXBvcnRlciwgY3dkLCBnZXRTb3VyY2UobGFzdElucHV0KSwgc2lnbmFsKSkgJiYgbGFzdEdvb2QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIuc3RhdHVzKCfwn5qAICBBbGwgZ29vZCDwn5GMJylcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2hhbmdlcy5zdGFnZUNvbXBsZXRlKCdzcGVsbGluZycpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZXIuc3RhdHVzKCfimqDvuI8gIElzc3VlcyBmb3VuZCDwn5GGJylcbiAgICAgICAgICAgICAgICAgICAgbGFzdEdvb2QgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXBvcnRlci5kb25lKClcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RJbnB1dCA9IGlucHV0RmlsZXNcbiAgICAgICAgICAgIGF3YWl0IGNsZWFuVXBSZW5hbWVzKG91dHB1dEZpbGVzKVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGF3YWl0IGNoYW5nZXMucG9zdENvbXBpbGUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGVSZXBvcnRlcixcbiAgICAgICAgICAgICAgICAgICAgY3dkLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dEZpbGVzLFxuICAgICAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoc3VjY2VzcyA/IG91dHB1dEZpbGVzIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFsLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJlcG9ydGVyLnN0YXR1cygn8J+agCAgQWxsIGdvb2Qg8J+RjCcpXG4gICAgICAgICAgICAgICAgbGFzdEdvb2QgPSB0cnVlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlcG9ydGVyLnN0YXR1cygn4pqg77iPICBJc3N1ZXMgZm91bmQg8J+RhicpXG4gICAgICAgICAgICAgICAgbGFzdEdvb2QgPSBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVwb3J0ZXIuZG9uZSgpXG4gICAgICAgIH0sXG4gICAgKVxufVxuXG5sZXQgY3JlYXRlZEZpbGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuXG5hc3luYyBmdW5jdGlvbiBjbGVhblVwUmVuYW1lcyhvdXRwdXRGaWxlczogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIW91dHB1dEZpbGVzKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIWNyZWF0ZWRGaWxlcykge1xuICAgICAgICBjcmVhdGVkRmlsZXMgPSBbLi4ub3V0cHV0RmlsZXNdXG4gICAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBnb25lID0gY3JlYXRlZEZpbGVzLmZpbHRlcihjcmVhdGVkID0+ICFvdXRwdXRGaWxlcy5pbmNsdWRlcyhjcmVhdGVkKSlcbiAgICBjcmVhdGVkRmlsZXMgPSBbLi4ub3V0cHV0RmlsZXNdXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoZ29uZS5tYXAoZW5zdXJlVW5saW5rZWQpKVxufVxuXG5mdW5jdGlvbiBpc091dHB1dChmaWxlOiBzdHJpbmcpIHtcbiAgICBpZiAoIWNyZWF0ZWRGaWxlcykge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZWRGaWxlcy5pbmNsdWRlcyhmaWxlKVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsQW5kUmVzdGFydCgpIHtcbiAgICB3YXRjaGVyLmNsb3NlKClcbiAgICBhd2FpdCBjaGFuZ2VzLmNsZWFyU3RhZ2VzKClcbiAgICBjb25zdCBwcmVDb21waWxlU3VjY2VzcyA9IGF3YWl0IGNoYW5nZXMucHJlQ29tcGlsZShjb25zb2xlUmVwb3J0ZXIsIGN3ZClcbiAgICBzdGFydChwcmVDb21waWxlU3VjY2Vzcylcbn1cblxuY29uc3QgW3ByZUNvbXBpbGVTdWNjZXNzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtjaGFuZ2VzLnByZUNvbXBpbGUoY29uc29sZVJlcG9ydGVyLCBjd2QpLCBzeW5jKCldKVxuc3RhcnQocHJlQ29tcGlsZVN1Y2Nlc3MpXG4iXX0=