| 315 | return self._snapshot |
| 316 | |
| 317 | async def load(self) -> HookConfigSnapshot: |
| 318 | snapshot = load_hooks_from_settings(self._settings_path) |
| 319 | self._snapshot = snapshot |
| 320 | |
| 321 | await self._registry.clear_source(HookSource.USER_SETTINGS) |
| 322 | |
| 323 | for event_name, hook_configs in snapshot.hooks.items(): |
| 324 | for config in hook_configs: |
| 325 | if event_name in ALL_HOOK_EVENTS: |
| 326 | await self._registry.register( |
| 327 | event_name, # type: ignore[arg-type] |
| 328 | config, |
| 329 | HookSource.USER_SETTINGS, |
| 330 | ) |
| 331 | |
| 332 | try: |
| 333 | self._last_mtime = self._settings_path.stat().st_mtime |
| 334 | except OSError: |
| 335 | self._last_mtime = 0.0 |
| 336 | |
| 337 | return snapshot |
| 338 | |
| 339 | async def reload_if_changed(self) -> bool: |
| 340 | try: |