@riddance/env
Version:
48 lines • 7.77 kB
JavaScript
import { readFile, writeFile } from 'node:fs/promises';
import { join, relative } from 'node:path';
import { check, format, resolveConfig } from 'prettier';
export async function formatted(reporter, path, files, signal) {
return await formatter(reporter, path, files, false, signal);
}
export async function formatFiles(path, files) {
await formatter(undefined, path, files, true);
}
async function formatter(reporter, path, files, fix, signal) {
const configPath = join(path, '.prettierrc.json');
const src = await Promise.all(files.map(file => Promise.all([
readFile(join(path, file), 'utf-8'),
resolveConfig(join(path, file), {
config: configPath,
editorconfig: true,
}),
])));
try {
signal?.throwIfAborted();
const bad = (await Promise.all(src.map(([s, options], ix) => check(s, {
...options,
filepath: files[ix],
}))))
.map((s, ix) => (s ? undefined : relative(process.cwd(), files[ix] ?? '')))
.filter(s => s !== undefined);
if (bad.length === 0) {
return true;
}
if (reporter) {
for (const file of bad) {
reporter.error('Improperly formatted', file);
}
}
if (fix) {
await Promise.all(bad.map(async (file) => {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const [s, options] = src[files.indexOf(file)];
await writeFile(join(path, file), await format(s, { ...options, filepath: file }));
}));
}
return false;
}
catch {
return false;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBR3ZELE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUMzQixRQUFrQixFQUNsQixJQUFZLEVBQ1osS0FBZSxFQUNmLE1BQW1CO0lBRW5CLE9BQU8sTUFBTSxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0FBQ2hFLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUFZLEVBQUUsS0FBZTtJQUMzRCxNQUFNLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUNqRCxDQUFDO0FBRUQsS0FBSyxVQUFVLFNBQVMsQ0FDcEIsUUFBOEIsRUFDOUIsSUFBWSxFQUNaLEtBQWUsRUFDZixHQUFZLEVBQ1osTUFBb0I7SUFFcEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDekIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDUixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDbkMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDNUIsTUFBTSxFQUFFLFVBQVU7WUFDbEIsWUFBWSxFQUFFLElBQUk7U0FDckIsQ0FBQztLQUNMLENBQUMsQ0FDTCxDQUNKLENBQUE7SUFDRCxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUE7UUFDeEIsTUFBTSxHQUFHLEdBQUcsQ0FDUixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQ3pCLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDTCxHQUFHLE9BQU87WUFDVixRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUN0QixDQUFDLENBQ0wsQ0FDSixDQUNKO2FBQ0ksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMxRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUE7UUFDakMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztRQUNELElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixRQUFRLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ2hELENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNOLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDYixHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtnQkFDakIsb0VBQW9FO2dCQUNwRSxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFFLENBQUE7Z0JBQzlDLE1BQU0sU0FBUyxDQUNYLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQ2hCLE1BQU0sTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUNsRCxDQUFBO1lBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQTtRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4sIHJlbGF0aXZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgY2hlY2ssIGZvcm1hdCwgcmVzb2x2ZUNvbmZpZyB9IGZyb20gJ3ByZXR0aWVyJ1xuaW1wb3J0IHR5cGUgeyBSZXBvcnRlciB9IGZyb20gJy4vcmVwb3J0ZXIuanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmb3JtYXR0ZWQoXG4gICAgcmVwb3J0ZXI6IFJlcG9ydGVyLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlczogc3RyaW5nW10sXG4gICAgc2lnbmFsOiBBYm9ydFNpZ25hbCxcbikge1xuICAgIHJldHVybiBhd2FpdCBmb3JtYXR0ZXIocmVwb3J0ZXIsIHBhdGgsIGZpbGVzLCBmYWxzZSwgc2lnbmFsKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZm9ybWF0RmlsZXMocGF0aDogc3RyaW5nLCBmaWxlczogc3RyaW5nW10pIHtcbiAgICBhd2FpdCBmb3JtYXR0ZXIodW5kZWZpbmVkLCBwYXRoLCBmaWxlcywgdHJ1ZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gZm9ybWF0dGVyKFxuICAgIHJlcG9ydGVyOiBSZXBvcnRlciB8IHVuZGVmaW5lZCxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZmlsZXM6IHN0cmluZ1tdLFxuICAgIGZpeDogYm9vbGVhbixcbiAgICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbikge1xuICAgIGNvbnN0IGNvbmZpZ1BhdGggPSBqb2luKHBhdGgsICcucHJldHRpZXJyYy5qc29uJylcbiAgICBjb25zdCBzcmMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgZmlsZXMubWFwKGZpbGUgPT5cbiAgICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICByZWFkRmlsZShqb2luKHBhdGgsIGZpbGUpLCAndXRmLTgnKSxcbiAgICAgICAgICAgICAgICByZXNvbHZlQ29uZmlnKGpvaW4ocGF0aCwgZmlsZSksIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBjb25maWdQYXRoLFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3Jjb25maWc6IHRydWUsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICApXG4gICAgdHJ5IHtcbiAgICAgICAgc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpXG4gICAgICAgIGNvbnN0IGJhZCA9IChcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgIHNyYy5tYXAoKFtzLCBvcHRpb25zXSwgaXgpID0+XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrKHMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlcGF0aDogZmlsZXNbaXhdLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICAubWFwKChzLCBpeCkgPT4gKHMgPyB1bmRlZmluZWQgOiByZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlc1tpeF0gPz8gJycpKSlcbiAgICAgICAgICAgIC5maWx0ZXIocyA9PiBzICE9PSB1bmRlZmluZWQpXG4gICAgICAgIGlmIChiYWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXBvcnRlcikge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGJhZCkge1xuICAgICAgICAgICAgICAgIHJlcG9ydGVyLmVycm9yKCdJbXByb3Blcmx5IGZvcm1hdHRlZCcsIGZpbGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpeCkge1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgYmFkLm1hcChhc3luYyBmaWxlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW3MsIG9wdGlvbnNdID0gc3JjW2ZpbGVzLmluZGV4T2YoZmlsZSldIVxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBqb2luKHBhdGgsIGZpbGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZm9ybWF0KHMsIHsgLi4ub3B0aW9ucywgZmlsZXBhdGg6IGZpbGUgfSksXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxufVxuIl19