41 lines
974 B
JavaScript
41 lines
974 B
JavaScript
import fs from "node:fs/promises";
|
|
import path from "node:path";
|
|
import packageJson from "./package.json" with { type: "json" };
|
|
|
|
const rules = {};
|
|
|
|
for (const dirent of await fs.readdir(import.meta.dirname, {
|
|
withFileTypes: true,
|
|
})) {
|
|
const fileName = dirent.name;
|
|
|
|
if (
|
|
dirent.isDirectory() ||
|
|
!fileName.endsWith(".js") ||
|
|
fileName === "index.js" ||
|
|
fileName === "test.js"
|
|
) {
|
|
continue;
|
|
}
|
|
|
|
const name = path.basename(fileName, ".js");
|
|
const { default: rule } = await import(
|
|
new URL(fileName, import.meta.url).href
|
|
);
|
|
|
|
if (rule.meta?.docs?.url) {
|
|
throw new Error(`Please remove 'meta.docs.url' from '${fileName}'.`);
|
|
}
|
|
|
|
rule.meta ??= {};
|
|
rule.meta.docs ??= {};
|
|
rule.meta.docs.url = `https://github.com/prettier/prettier/blob/main/scripts/tools/eslint-plugin-prettier-internal-rules/${fileName}`;
|
|
|
|
rules[name] = rule;
|
|
}
|
|
|
|
export default {
|
|
meta: { name: packageJson.name, version: packageJson.version },
|
|
rules,
|
|
};
|