-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgenerate-all-rules.js
28 lines (21 loc) · 998 Bytes
/
generate-all-rules.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* eslint-disable @typescript-eslint/no-require-imports */
const fs = require('fs');
const packageJson = require('./package.json');
function camelize(s) {
return s.replace(/-./g, (x) => x[1].toUpperCase());
}
const ruleNames = fs
.readdirSync(`${__dirname}/src/rules`)
.filter(
(fileName) =>
!fileName.includes('.test') &&
!fileName.includes('.generated') &&
fileName !== 'tests-setup.mjs' &&
fileName !== 'index.ts'
)
.map((fileName) => fileName.replace(/\.ts$/, ''));
const imports = ruleNames.map((name) => `import ${camelize(name)} from './${name}';`).join('');
const pairs = ruleNames.map((name) => `"${name}": ${camelize(name)}`).join(',');
const REPO_URL = packageJson.repository.url.replace(/^git\+/, '').replace(/\.git$/, '');
const content = `${imports}\nexport const allRules = {${pairs}};\nexport const REPO_URL="${REPO_URL}"`;
fs.writeFileSync(`${__dirname}/src/rules/allRules.generated.ts`, content);