Generate migration report.
(self, success: bool)
| 409 | print(f"[WARN] Could not save migration state: {e}") |
| 410 | |
| 411 | def _generate_migration_report(self, success: bool): |
| 412 | """Generate migration report.""" |
| 413 | completed_count = sum(1 for step in self.steps if step.completed) |
| 414 | failed_count = sum(1 for step in self.steps if step.error) |
| 415 | total_count = len(self.steps) |
| 416 | |
| 417 | print("\n" + "=" * 80) |
| 418 | print("LEGACY WORKFLOW MIGRATION REPORT") |
| 419 | print("=" * 80) |
| 420 | print(f"Total Steps: {total_count}") |
| 421 | print(f"Completed: {completed_count}") |
| 422 | print(f"Failed: {failed_count}") |
| 423 | print(f"Success Rate: {(completed_count/total_count)*100:.1f}%") |
| 424 | |
| 425 | if self.dry_run: |
| 426 | print("\n[DRY RUN] COMPLETED - No actual changes were made") |
| 427 | |
| 428 | if success: |
| 429 | print("\n[SUCCESS] Migration completed successfully!") |
| 430 | print("\n[NEXT STEPS]:") |
| 431 | print("1. Test the new modular workflows manually") |
| 432 | print("2. Update branch protection rules in repository settings") |
| 433 | print("3. Monitor the first few workflow runs") |
| 434 | print("4. Remove legacy backup files when confident") |
| 435 | else: |
| 436 | print(f"\n[WARNING] Migration completed with {failed_count} failures") |
| 437 | print("\n[REQUIRED ACTIONS]:") |
| 438 | for step in self.steps: |
| 439 | if step.error and step.required: |
| 440 | print(f"- Fix {step.name}: {step.error}") |
| 441 | |
| 442 | # Show step details |
| 443 | print("\n[STEP DETAILS]:") |
| 444 | for step in self.steps: |
| 445 | status = "[PASS]" if step.completed else "[FAIL]" if step.error else "[PENDING]" |
| 446 | required = "Required" if step.required else "Optional" |
| 447 | print(f" {status} {step.name} ({required})") |
| 448 | if step.error: |
| 449 | print(f" Error: {step.error}") |
| 450 | |
| 451 | |
| 452 | def main(): |