2026-05-18 22:47:46 +00:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
from pathlib import Path
|
2026-05-19 01:07:18 +00:00
|
|
|
import os
|
|
|
|
|
from dotenv import dotenv_values
|
2026-05-18 22:47:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parent
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def load_env(service: str | None = None) -> None:
|
|
|
|
|
root_env = REPO_ROOT / ".env"
|
2026-05-19 01:07:18 +00:00
|
|
|
root_values: dict[str, str] = {}
|
|
|
|
|
service_values: dict[str, str] = {}
|
|
|
|
|
|
2026-05-18 22:47:46 +00:00
|
|
|
if root_env.exists():
|
2026-05-19 01:07:18 +00:00
|
|
|
root_values = {k: v for k, v in dotenv_values(root_env).items() if v is not None}
|
2026-05-18 22:47:46 +00:00
|
|
|
|
|
|
|
|
if service:
|
|
|
|
|
service_env = REPO_ROOT / service / ".env"
|
|
|
|
|
if service_env.exists():
|
2026-05-19 01:07:18 +00:00
|
|
|
service_values = {k: v for k, v in dotenv_values(service_env).items() if v is not None}
|
|
|
|
|
|
|
|
|
|
# Precedence: explicit env > service env > root env
|
|
|
|
|
merged = {**root_values, **service_values}
|
|
|
|
|
for key, value in merged.items():
|
|
|
|
|
os.environ.setdefault(key, value)
|