Persist scenes to disk.
(self)
| 179 | logger.warning("Failed to load scenes from %s", self._path, exc_info=True) |
| 180 | |
| 181 | def _save(self) -> None: |
| 182 | """Persist scenes to disk.""" |
| 183 | try: |
| 184 | self._path.parent.mkdir(parents=True, exist_ok=True, mode=0o700) |
| 185 | data = { |
| 186 | "version": "1.0", |
| 187 | "scenes": { |
| 188 | name: _serialize_scene(scene) |
| 189 | for name, scene in sorted(self._scenes.items()) |
| 190 | }, |
| 191 | } |
| 192 | self._path.write_text(json.dumps(data, indent=2, sort_keys=True)) |
| 193 | self._path.chmod(0o600) |
| 194 | except Exception: |
| 195 | logger.error("Failed to save scenes to %s", self._path, exc_info=True) |
| 196 | |
| 197 | def get(self, name: str) -> SceneConfig | None: |
| 198 | """Look up a scene by name (case-insensitive).""" |
no test coverage detected