// lintcn list — list installed rules with metadata from .lintcn/ import { findLintcnDir } from '../paths.ts' import { discoverRules } from '../discover.ts' export function listRules(): void { const lintcnDir = findLintcnDir() if (!lintcnDir) { console.log('No .lintcn/ directory found. Run `lintcn add ` to add rules.') return } const rules = discoverRules(lintcnDir) if (rules.length === 0) { console.log('No rules installed. Run `lintcn add ` to add rules.') return } console.log('Installed rules:\n') const maxNameLen = Math.max(...rules.map((r) => { return r.name.length + (r.severity === 'warn' ? 7 : 0) // ' (warn)' = 7 chars })) for (const rule of rules) { const suffix = rule.severity === 'warn' ? ' (warn)' : '' const name = (rule.name + suffix).padEnd(maxNameLen + 2) const desc = rule.description || '(no description)' console.log(` ${name}${desc}`) } console.log(`\n${rules.length} rule${rules.length === 1 ? '' : 's'} installed`) }