()
| 468 | // ============================================ |
| 469 | |
| 470 | function main(): void { |
| 471 | console.log('Scanning component directories...'); |
| 472 | |
| 473 | const componentDirs = discoverComponentDirs(); |
| 474 | console.log(`Found ${componentDirs.length} component directories.`); |
| 475 | |
| 476 | console.log('Scanning docs/components/ for MDX files...'); |
| 477 | const docFiles = discoverDocFiles(); |
| 478 | console.log(`Found ${docFiles.size} MDX documentation files.\n`); |
| 479 | |
| 480 | const results = componentDirs.map(auditComponent); |
| 481 | const report = generateReport(results); |
| 482 | |
| 483 | printConsoleTable(report); |
| 484 | writeJsonReport(report); |
| 485 | |
| 486 | // Exit with non-zero code if any Coverage_Gap or Stale_Entry is found |
| 487 | const hasGaps = report.summary.missing > 0 || report.summary.partiallyDocumented > 0; |
| 488 | if (hasGaps) { |
| 489 | console.log( |
| 490 | '⚠️ Audit found coverage gaps or stale entries. Exiting with code 1.' |
| 491 | ); |
| 492 | process.exit(1); |
| 493 | } else { |
| 494 | console.log('✅ All components are fully documented. Exiting with code 0.'); |
| 495 | process.exit(0); |
| 496 | } |
| 497 | } |
| 498 | |
| 499 | main(); |
no test coverage detected