refactor: slightly clean up config parsing
This commit is contained in:
parent
5fad1f8ebe
commit
c37753e0cf
1 changed files with 17 additions and 20 deletions
|
@ -1,7 +1,7 @@
|
|||
import logging
|
||||
import os
|
||||
import sys
|
||||
from typing import Optional
|
||||
from typing import Any, Optional
|
||||
|
||||
import tomllib
|
||||
|
||||
|
@ -33,6 +33,20 @@ class Config:
|
|||
return self.secrets[handler]
|
||||
|
||||
|
||||
def config_parse_dict(raw_conf: dict[str, Any], key: str) -> dict[str, str]:
|
||||
if key not in raw_conf:
|
||||
log.error(f'missing "{key}" in config')
|
||||
sys.exit(1)
|
||||
|
||||
for k, v in raw_conf[key].items():
|
||||
assert isinstance(k, str), f'"{k}" is not a string'
|
||||
assert isinstance(v, str), f'"{k}" value "{v}" is not a string'
|
||||
|
||||
result: dict[str, str] = raw_conf[key]
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def read_config(path: Optional[str]) -> Config:
|
||||
if not path:
|
||||
# should be here only when running from hook
|
||||
|
@ -47,25 +61,8 @@ def read_config(path: Optional[str]) -> Config:
|
|||
|
||||
c = Config()
|
||||
|
||||
if 'domains' not in raw_conf:
|
||||
log.error('missing "domains"')
|
||||
sys.exit(1)
|
||||
|
||||
for k, v in raw_conf['domains'].items():
|
||||
assert isinstance(k, str), f'domain "{k}" is not a string'
|
||||
assert isinstance(v, str), f'domain "{k}" handler {v} is not a string'
|
||||
|
||||
c.domains = raw_conf['domains']
|
||||
|
||||
if 'secrets' not in raw_conf:
|
||||
log.error('missing "secrets"')
|
||||
sys.exit(1)
|
||||
|
||||
for k, v in raw_conf['secrets'].items():
|
||||
assert isinstance(k, str), f'secret key "{k}" is not a string'
|
||||
assert isinstance(v, str), f'secret "{k}" value {v} is not a string'
|
||||
|
||||
c.secrets = raw_conf['secrets']
|
||||
c.domains = config_parse_dict(raw_conf, 'domains')
|
||||
c.secrets = config_parse_dict(raw_conf, 'secrets')
|
||||
|
||||
post_acquire = []
|
||||
if 'post_acquire' in raw_conf:
|
||||
|
|
Loading…
Reference in a new issue