Source code for gcip2.di

 1import pathlib
 2
 3import injector
 4
 5from gcip2.ci.jobs import assets
 6from gcip2.project_config import ProjectConfig
 7from gcip2.tasks_core.models.params import Params
 8from gcip2.tasks_core.registry import TaskRegistry
 9from gcip2.vault import SecretsHandler
10from gcip2.vault.token_store import TokenStore
11
12
[docs] 13class ConfigPath: 14 def __init__(self, path: pathlib.Path) -> None: 15 self.path = path
16 17
[docs] 18class Module(injector.Module): 19 def __init__(self, config_path: pathlib.Path = pathlib.Path("environment.toml")) -> None: 20 self.config_path = config_path 21
[docs] 22 def configure(self, binder: injector.Binder) -> None: 23 binder.bind(ConfigPath, to=ConfigPath(self.config_path)) 24 binder.bind(TaskRegistry, scope=injector.singleton) 25 binder.bind(SecretsHandler, scope=injector.singleton) 26 binder.bind(Params, scope=injector.singleton) 27 binder.bind(TokenStore, scope=injector.singleton)
28
[docs] 29 @injector.singleton 30 @injector.provider 31 def provide_config(self, cfg_path: ConfigPath) -> ProjectConfig: 32 return ProjectConfig.from_file(cfg_path.path)
33
[docs] 34 @injector.provider 35 @injector.singleton 36 def provide_script_linux(self) -> assets.ScriptLinux: 37 return assets.ScriptLinux.load()
38
[docs] 39 @injector.provider 40 @injector.singleton 41 def provide_before_script_linux(self) -> assets.BeforeScriptLinux: 42 return assets.BeforeScriptLinux.load()
43
[docs] 44 @injector.provider 45 @injector.singleton 46 def provide_after_script_linux(self) -> assets.AfterScriptLinux: 47 return assets.AfterScriptLinux.load()