44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
from dataclasses import dataclass
|
|
from pathlib import Path
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class Settings:
|
|
root_aliases: dict[str, str]
|
|
task_db_path: str
|
|
|
|
|
|
DEFAULT_ROOT_ALIASES = {
|
|
"storage1": "/Volumes/8TB",
|
|
"storage2": "/Volumes/8TB_RAID1",
|
|
}
|
|
|
|
|
|
def _load_root_aliases() -> dict[str, str]:
|
|
# Minimal env override format: storage1=/path1,storage2=/path2
|
|
raw = os.getenv("WEBMANAGER_ROOT_ALIASES", "").strip()
|
|
if not raw:
|
|
return dict(DEFAULT_ROOT_ALIASES)
|
|
|
|
parsed: dict[str, str] = {}
|
|
for entry in raw.split(","):
|
|
if "=" not in entry:
|
|
continue
|
|
alias, root = entry.split("=", 1)
|
|
alias = alias.strip()
|
|
root = root.strip()
|
|
if alias and root:
|
|
parsed[alias] = root
|
|
return parsed or dict(DEFAULT_ROOT_ALIASES)
|
|
|
|
|
|
def get_settings() -> Settings:
|
|
default_task_db_path = str(Path(__file__).resolve().parents[1] / "data" / "tasks.db")
|
|
task_db_path = os.getenv("WEBMANAGER_TASK_DB_PATH", default_task_db_path).strip()
|
|
if not task_db_path:
|
|
task_db_path = default_task_db_path
|
|
return Settings(root_aliases=_load_root_aliases(), task_db_path=task_db_path)
|