First commit
This commit is contained in:
0
src/setting/__init__.py
Normal file
0
src/setting/__init__.py
Normal file
29
src/setting/config.py
Normal file
29
src/setting/config.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import os
|
||||
import sys
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
def env(name: str) -> str:
|
||||
v = os.getenv(name)
|
||||
if not v:
|
||||
print(f"[ERR] env {name} is required.", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
return v.strip()
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class AppConfig:
|
||||
grafana_url: str
|
||||
grafana_api_key: str
|
||||
grafana_dashboard_uid: str
|
||||
mattermost_webhook: str
|
||||
|
||||
@staticmethod
|
||||
def load() -> "AppConfig":
|
||||
url = env("GRAFANA_URL").rstrip("/")
|
||||
return AppConfig(
|
||||
grafana_url=url,
|
||||
grafana_api_key=env("GRAFANA_API_KEY"),
|
||||
grafana_dashboard_uid=env("GRAFANA_DASHBOARD_UID"),
|
||||
mattermost_webhook=env("MATTERMOST_WEBHOOK"),
|
||||
)
|
||||
Reference in New Issue
Block a user