Print a phase banner with optional details. Example output: ═══════════════════════════════════════════════════════════ PHASE 0: PACKAGE INSTALLATION ═══════════════════════════════════════════════════════════ 📋 Project: C:\\Users\\niteris\\de
(title: str, details: dict[str, str] | None = None)
| 34 | |
| 35 | @staticmethod |
| 36 | def print_phase_banner(title: str, details: dict[str, str] | None = None) -> None: |
| 37 | """Print a phase banner with optional details. |
| 38 | |
| 39 | Example output: |
| 40 | ═══════════════════════════════════════════════════════════ |
| 41 | PHASE 0: PACKAGE INSTALLATION |
| 42 | ═══════════════════════════════════════════════════════════ |
| 43 | 📋 Project: C:\\Users\\niteris\\dev\\fastled |
| 44 | 📋 Environment: esp32c6 |
| 45 | 📋 Caller PID: 12345 |
| 46 | |
| 47 | Args: |
| 48 | title: Banner title text |
| 49 | details: Optional dictionary of key-value pairs to display below banner |
| 50 | """ |
| 51 | separator = BannerPrinter.DOUBLE_LINE * BannerPrinter.BANNER_WIDTH |
| 52 | |
| 53 | print(separator) |
| 54 | print(title) |
| 55 | print(separator) |
| 56 | |
| 57 | if details: |
| 58 | for key, value in details.items(): |
| 59 | print(f"📋 {key}: {value}") |
| 60 | print() # Blank line after details |
| 61 | |
| 62 | @staticmethod |
| 63 | def print_progress_section(title: str) -> None: |
no test coverage detected