Files
home-automation-backend/src/config.py

41 lines
1.1 KiB
Python
Raw Normal View History

2024-08-15 14:16:50 +02:00
from __future__ import annotations
from pathlib import Path
from typing import TYPE_CHECKING, ClassVar
2024-08-15 14:51:33 +02:00
from dotenv import dotenv_values, set_key, unset_key
2024-08-15 14:16:50 +02:00
if TYPE_CHECKING:
from collections import OrderedDict
2024-08-15 14:16:50 +02:00
config_path = Path(__file__).parent.resolve()
DOT_ENV_PATH = Path(config_path, ".env")
DOT_ENV_PATH.touch(mode=0o600, exist_ok=True)
2024-08-15 14:16:50 +02:00
class Config:
env_dict: ClassVar[OrderedDict[str, str]] = {}
dot_env_path = DOT_ENV_PATH
2024-08-16 23:30:54 +02:00
VERSION = "2.0"
2024-08-15 14:16:50 +02:00
@staticmethod
def init(dotenv_path: str = DOT_ENV_PATH) -> None:
Config.dot_env_path = dotenv_path
Config.env_dict = dotenv_values(dotenv_path=dotenv_path)
@staticmethod
def get_env(key: str) -> str | None:
if key in Config.env_dict:
return Config.env_dict[key]
return None
@staticmethod
def update_env(key: str, value: str) -> None:
set_key(Config.dot_env_path, key, value)
Config.env_dict = dotenv_values(dotenv_path=Config.dot_env_path)
@staticmethod
def remove_env(key: str) -> None:
unset_key(Config.dot_env_path, key)
Config.env_dict = dotenv_values(dotenv_path=Config.dot_env_path)