Coverage for  / home / runner / work / bijux-cli / bijux-cli / src / bijux_cli / plugins / services.py: 93%

12 statements  

« prev     ^ index     » next       coverage.py v7.13.2, created at 2026-01-26 17:59 +0000

1# SPDX-License-Identifier: Apache-2.0 

2# Copyright © 2025 Bijan Mousavi 

3 

4"""Plugin service registration.""" 

5 

6from __future__ import annotations 

7 

8from typing import TYPE_CHECKING 

9 

10from bijux_cli.plugins.contracts import PluginConfig, RegistryProtocol 

11from bijux_cli.services.contracts import TelemetryProtocol 

12 

13if TYPE_CHECKING: 

14 from bijux_cli.core.di import DIContainer 

15 

16 

17def register_plugin_services( 

18 di: DIContainer, *, plugin_config: PluginConfig | None = None 

19) -> None: 

20 """Register plugin configuration and registry services.""" 

21 import bijux_cli.plugins.registry 

22 

23 if plugin_config is None: 23 ↛ 26line 23 didn't jump to line 26 because the condition on line 23 was always true

24 plugin_config = PluginConfig(enabled=True, allow_entrypoints=True) 

25 

26 di.register(PluginConfig, lambda: plugin_config) 

27 di.register( 

28 bijux_cli.plugins.registry.Registry, 

29 lambda: bijux_cli.plugins.registry.Registry(di.resolve(TelemetryProtocol)), 

30 ) 

31 di.register( 

32 RegistryProtocol, 

33 lambda: di.resolve(bijux_cli.plugins.registry.Registry), 

34 ) 

35 

36 

37__all__ = ["register_plugin_services"]