aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/hrc/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/hrc/config.py')
-rw-r--r--src/hrc/config.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/hrc/config.py b/src/hrc/config.py
new file mode 100644
index 0000000..d179258
--- /dev/null
+++ b/src/hrc/config.py
@@ -0,0 +1,34 @@
+from typing import Literal, Optional, Set, Union
+
+from pydantic import BaseModel, ConfigDict, DirectoryPath, Field
+
+
+class ConfigModel(BaseModel):
+ model_config = ConfigDict(extra="allow")
+
+ __config_name__: str = ""
+
+
+class LogConfig(ConfigModel):
+ level: Union[str, int] = "DEBUG"
+ verbose_exception: bool = False
+
+
+class ServiceConfig(ConfigModel):
+ """Service configuration."""
+
+
+class CoreConfig(ConfigModel):
+ rules: Set[str] = Field(default_factory=set)
+ rule_dirs: Set[DirectoryPath] = Field(default_factory=set)
+ log: LogConfig = LogConfig()
+ services: Set[str] = Field(default_factory=set)
+
+class RuleConfig(ConfigModel):
+ """Rule configuration."""
+
+
+class MainConfig(ConfigModel):
+ core: CoreConfig = CoreConfig()
+ rule: RuleConfig = RuleConfig()
+ service: ServiceConfig = ServiceConfig()