31 lines
831 B
TypeScript
Executable File
31 lines
831 B
TypeScript
Executable File
#!/usr/bin/env tsx
|
|
import { promises as fs } from 'node:fs';
|
|
import { camelCase } from 'lodash';
|
|
|
|
export async function buildLocalRules() {
|
|
const files = (await fs.readdir('./src/rules'))
|
|
.filter(file => file.endsWith('.ts'))
|
|
.filter(file => file !== 'index.ts')
|
|
.map(file => file.slice(0, -3));
|
|
|
|
const entryFile = /* js */ `
|
|
import type { Rule } from 'eslint';
|
|
import type { ESLintUtils } from '@typescript-eslint/utils';
|
|
|
|
${files.map(file => `import ${camelCase(file)} from './${file}';`).join('\n')}
|
|
|
|
export const rules: Record<
|
|
string,
|
|
Rule.RuleModule | ESLintUtils.RuleModule<string, unknown[]>
|
|
> = {
|
|
${files.map(file => `'${file}': ${camelCase(file)},`).join('\n ')}
|
|
};
|
|
`.trim();
|
|
|
|
await fs.writeFile('./src/rules/index.ts', entryFile + '\n');
|
|
}
|
|
|
|
if (require.main === module) {
|
|
buildLocalRules();
|
|
}
|