Skip to content

Commit 1591611

Browse files
committed
Add rule override mechanism to preset generation with configurable severity and config overrides
- Added RULE_OVERRIDES constant to allow customizing rule severity and config during preset generation - Implemented override logic that handles both string severity overrides and full config array overrides - When overriding severity only, preserves defaultConfig if available - Applied overrides to both recommended and all presets - Added JSDoc documentation with usage examples for string and array override
1 parent 9cbdd0f commit 1591611

1 file changed

Lines changed: 28 additions & 2 deletions

File tree

tasks/generate-presets.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,18 @@ import {
1818
// eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle
1919
const __dirname = path.dirname(fileURLToPath(import.meta.url));
2020

21+
/**
22+
* Override severity or config for specific rules in preset generation.
23+
* If you want to change the default severity or config for a rule, add it here.
24+
*
25+
* Examples:
26+
* - 'rule-name': 'error' (Override severity only).
27+
* - 'rule-name': ['warn', { option: true }] (Override severity with config).
28+
*/
29+
const RULE_OVERRIDES: Readonly<Record<string, LinterRuleConfig>> = {
30+
// TODO: Add overrides here
31+
};
32+
2133
/**
2234
* Generates presets for rules.
2335
*/
@@ -46,11 +58,25 @@ async function main() {
4658
ruleConfig = severity;
4759
}
4860

61+
let finalConfig: LinterRuleConfig = ruleConfig;
62+
const override = RULE_OVERRIDES[rule.meta.docs.name];
63+
if (override !== undefined) {
64+
if (typeof override === 'string') {
65+
if (rule.meta.configSchema && rule.meta.defaultConfig) {
66+
finalConfig = [override, ...rule.meta.defaultConfig];
67+
} else {
68+
finalConfig = override;
69+
}
70+
} else {
71+
finalConfig = override as LinterRuleConfig;
72+
}
73+
}
74+
4975
if (rule.meta.docs.recommended) {
50-
recommended.rules![rule.meta.docs.name] = ruleConfig;
76+
recommended.rules![rule.meta.docs.name] = finalConfig;
5177
}
5278

53-
all.rules![rule.meta.docs.name] = ruleConfig;
79+
all.rules![rule.meta.docs.name] = finalConfig;
5480
}
5581

5682
await writeFile(path.join(__dirname, '../config-presets/all.json'), JSON.stringify(all, null, 2));

0 commit comments

Comments
 (0)