Collection of ESP32 build artifacts.
| 51 | |
| 52 | @dataclass |
| 53 | class ArtifactSet: |
| 54 | """Collection of ESP32 build artifacts.""" |
| 55 | |
| 56 | firmware: Optional[Path] = None |
| 57 | bootloader: Optional[Path] = None |
| 58 | partitions_bin: Optional[Path] = None |
| 59 | partitions_csv: Optional[Path] = None |
| 60 | boot_app0: Optional[Path] = None |
| 61 | spiffs: Optional[Path] = None |
| 62 | merged: Optional[Path] = None |
| 63 | |
| 64 | @property |
| 65 | def required_files_present(self) -> bool: |
| 66 | """Check if all required files are present.""" |
| 67 | return all( |
| 68 | [ |
| 69 | self.firmware, |
| 70 | self.bootloader, |
| 71 | self.partitions_bin or self.partitions_csv, |
| 72 | ] |
| 73 | ) |
| 74 | |
| 75 | def missing_files(self) -> list[str]: |
| 76 | """Get list of missing required files.""" |
| 77 | missing: list[str] = [] |
| 78 | if not self.firmware: |
| 79 | missing.append("firmware.bin") |
| 80 | if not self.bootloader: |
| 81 | missing.append("bootloader.bin") |
| 82 | if not self.partitions_bin and not self.partitions_csv: |
| 83 | missing.append("partitions.bin or partitions.csv") |
| 84 | return missing |
| 85 | |
| 86 | |
| 87 | class ESP32ArtifactDiscovery: |
no outgoing calls