import yaml from pathlib import Path from typing import Any from fastapi import APIRouter, Depends from app.auth import verify_token router = APIRouter() _REGISTRY_PATH = Path("/opt/infrastructure/servers/hetzner-vps/registry.yaml") def _load_registry() -> dict: """Load and return the registry YAML.""" with open(_REGISTRY_PATH) as f: return yaml.safe_load(f) @router.get("/", summary="Get project registry") async def get_registry( _: str = Depends(verify_token), ) -> dict[str, Any]: """Return project list with environments, promote config, and domains.""" registry = _load_registry() projects = {} for name, cfg in registry.get("projects", {}).items(): projects[name] = { "environments": cfg.get("environments", []), "domains": cfg.get("domains", {}), "promote": cfg.get("promote"), "has_cli": bool(cfg.get("cli")), "static": cfg.get("static", False), "infrastructure": cfg.get("infrastructure", False), "backup_dir": cfg.get("backup_dir"), "has_coolify": bool(cfg.get("coolify_uuids")), } return {"projects": projects}