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
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()