IRIS-AI_DEMO / storage_paths.py
Brajmovech's picture
Harden demo feedback pathing and runtime diagnostics
3edb836
import os
from pathlib import Path
def _as_bool(value: str) -> bool:
return str(value or "").strip().lower() in {"1", "true", "yes", "on"}
def resolve_data_dir(project_root: Path, demo_mode: bool) -> Path:
"""
Resolve runtime data directory in a team-safe way.
Priority:
1) IRIS_DATA_DIR (absolute or project-relative)
2) Demo mode -> data/demo_guests (single canonical feedback/report path)
3) IRIS_USE_REPO_DATA=true -> data/
4) default isolated runtime dir -> runtime_data/
"""
explicit_dir = str(os.environ.get("IRIS_DATA_DIR", "")).strip()
if explicit_dir:
candidate = Path(explicit_dir).expanduser()
if not candidate.is_absolute():
candidate = project_root / candidate
candidate.mkdir(parents=True, exist_ok=True)
return candidate
if demo_mode:
preferred_rel = Path("data/demo_guests")
else:
use_repo_data = _as_bool(os.environ.get("IRIS_USE_REPO_DATA", "false"))
preferred_rel = Path("data") if use_repo_data else Path("runtime_data")
preferred = project_root / preferred_rel
try:
preferred.mkdir(parents=True, exist_ok=True)
return preferred
except OSError:
fallback = project_root / Path("runtime_data")
fallback.mkdir(parents=True, exist_ok=True)
return fallback