"""Корень данных kind-k8s: каталог ``clusters/`` и пути в meta.json.

``KIND_K8S_WORKDIR`` — рабочий каталог, внутри него создаётся ``clusters/<имя>/``.
В Docker-образе задаётся ``/work``, куда монтируется том с хоста (только данные).

Локальный запуск из ``kind-k8s/app/*.py``: переменную не задаём — корнем данных
считается **родитель** каталога ``app/`` (каталог ``kind-k8s/``, рядом с ``clusters/``).

Автор: Сергей Антропов
Сайт: https://devops.org.ru
"""

from __future__ import annotations

import os
from pathlib import Path

# Каталог пакета: kind-k8s/app/; в образе: /opt/kind-k8s/app
_LIB = Path(__file__).resolve().parent
# Корень репозитория kind-k8s (рядом с clusters/), если KIND_K8S_WORKDIR не задан
_REPO_KIND_K8S = _LIB.parent


def data_root() -> Path:
    """Корень данных (родитель для ``clusters/``)."""
    w = (os.environ.get("KIND_K8S_WORKDIR") or "").strip()
    if w:
        return Path(w).resolve()
    return _REPO_KIND_K8S


def clusters_dir() -> Path:
    """``<data_root>/clusters``."""
    return data_root() / "clusters"


def container_cli_name() -> str:
    """
    Имя исполняемого файла для вызовов к движку контейнеров (``docker`` / ``podman``).

    В образе веб-UI ставится только **docker-cli** (Alpine ``apk add docker-cli``); бинарника
    ``podman`` в контейнере нет. На хост при этом может быть смонтирован сокет **Podman**
    (см. ``CONTAINER_SOCKET``): API совместим с Docker, клиент ``docker`` обращается к нему
    через ``DOCKER_HOST`` и смонтированный ``/var/run/docker.sock``.

    Поэтому при ``KIND_K8S_IN_CONTAINER`` всегда возвращаем ``"docker"`` — независимо от
    ``CONTAINER_CLI`` в ``.env`` (его имеет смысл задавать ``podman`` только при локальном
    запуске приложения на хосте без контейнера).
    """
    raw_in = (os.environ.get("KIND_K8S_IN_CONTAINER") or "").strip().lower()
    if raw_in in ("1", "true", "yes", "on"):
        return "docker"
    return (os.environ.get("CONTAINER_CLI") or "docker").strip() or "docker"
