| 504 | } |
| 505 | |
| 506 | function printResults( |
| 507 | results: ValidationResult[], |
| 508 | language: string, |
| 509 | ): { failed: number; passed: number; failures: ValidationResult[] } { |
| 510 | const failed = results.filter((r) => !r.success); |
| 511 | const passed = results.filter((r) => r.success); |
| 512 | |
| 513 | if (failed.length === 0) { |
| 514 | console.log(` ✅ ${passed.length} files passed`); |
| 515 | return { failed: 0, passed: passed.length, failures: [] }; |
| 516 | } |
| 517 | |
| 518 | console.log(` ❌ ${failed.length} failed, ${passed.length} passed\n`); |
| 519 | |
| 520 | for (const result of failed) { |
| 521 | console.log(` ┌─ ${result.sourceFile}:${result.sourceLine}`); |
| 522 | console.log(` │ Extracted to: ${result.file}`); |
| 523 | for (const error of result.errors.slice(0, 5)) { |
| 524 | console.log(` │ ${error}`); |
| 525 | } |
| 526 | if (result.errors.length > 5) { |
| 527 | console.log(` │ ... and ${result.errors.length - 5} more errors`); |
| 528 | } |
| 529 | console.log(` └─`); |
| 530 | } |
| 531 | |
| 532 | return { failed: failed.length, passed: passed.length, failures: failed }; |
| 533 | } |
| 534 | |
| 535 | function writeGitHubSummary( |
| 536 | summaryData: { |