Skip to content

Commit 4f0f002

Browse files
authored
Merge pull request #220 from mojoatomic/feat/warn-only-init-refs-225
feat(init): warn-only ESLint config; enforcement via ratchet
2 parents bb95342 + 05bd521 commit 4f0f002

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

lib/generators/eslint-arch-config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ function generateArchitectureRules(architecture) {
3030
overrides.push({
3131
files: ['**/bin/*.js', '**/bin/**/*.js'],
3232
rules: {
33-
'max-lines': ['error', { max: maxFileLength.cli, skipBlankLines: true, skipComments: true }]
33+
'max-lines': ['warn', { max: maxFileLength.cli, skipBlankLines: true, skipComments: true }]
3434
}
3535
});
3636
}

lib/generators/eslint-config.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,14 @@ function writeEslintConfig(cwd, cfg) {
4848
: ' // AI-friendly\n \'complexity\': [\'warn\', 15],\n \'max-depth\': [\'warn\', 4],\n \'max-lines-per-function\': [\'warn\', 100],\n';
4949

5050
const content = `// Generated by eslint-plugin-ai-code-snifftest init\nimport js from '@eslint/js';\nimport globals from 'globals';\nimport aiSnifftest from 'eslint-plugin-ai-code-snifftest';\n\nexport default [\n js.configs.recommended,\n {\n files: ['**/*.js'],\n languageOptions: {\n globals: {\n ...globals.node\n }\n },\n plugins: { 'ai-code-snifftest': aiSnifftest },\n rules: {\n // Baseline\n 'no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],\n 'no-undef': 'error',\n 'prefer-const': 'warn',\n 'no-var': 'error',\n // Consistency\n 'quotes': ['warn', 'single', { avoidEscape: true }],\n 'semi': ['warn', 'always'],\n 'eqeqeq': ['error', 'always'],\n${aiFriendlyRules} // Naming (basic)\n 'camelcase': ['error', { properties: 'always' }],\n // Domain-specific\n 'ai-code-snifftest/no-redundant-calculations': 'warn',\n 'ai-code-snifftest/no-equivalent-branches': 'warn',\n 'ai-code-snifftest/prefer-simpler-logic': 'warn',\n 'ai-code-snifftest/no-redundant-conditionals': 'warn',\n 'ai-code-snifftest/no-unnecessary-abstraction': 'warn',\n 'ai-code-snifftest/no-generic-names': 'warn',\n 'ai-code-snifftest/enforce-domain-terms': 'warn',${archRulesConfig}\n }\n }${archOverridesConfig}\n];\n`;
51-
fs.writeFileSync(file, content);
51+
// Warn-only output: convert all built-in "error" severities to "warn" in generated config
52+
const out = content
53+
.replace(/'no-undef': 'error'/g, "'no-undef': 'warn'")
54+
.replace(/'no-var': 'error'/g, "'no-var': 'warn'")
55+
.replace(/'eqeqeq': \['error', 'always'\]/g, "'eqeqeq': ['warn', 'always']")
56+
.replace(/'camelcase': \['error', \{ properties: 'always' \}\]/g, "'camelcase': ['warn', { properties: 'always' }]");
57+
58+
fs.writeFileSync(file, out);
5259
console.log(`Wrote ${file}`);
5360
}
5461

tests/lib/generators/eslint-arch-config.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ describe('eslint-arch-config generator', function () {
7777

7878
assert.ok(cliOverride, 'Should have CLI override');
7979
assert.ok(cliOverride.rules['max-lines']);
80-
assert.strictEqual(cliOverride.rules['max-lines'][0], 'error'); // CLI is error, not warn
80+
assert.strictEqual(cliOverride.rules['max-lines'][0], 'warn'); // CLI is warn in passive start
8181
assert.strictEqual(cliOverride.rules['max-lines'][1].max, 100);
8282
});
8383

0 commit comments

Comments
 (0)