"""Projektliste: konfigurierte Pfade aus projekte.txt (eine Zeile = absoluter Pfad,
#-Kommentare). Von Hand editierbar — UI-Verwaltung kommt später (YAGNI)."""
from pathlib import Path

import config


def lade() -> list[dict]:
    """→ [{name, pfad, fehler?}]. Toter Pfad oder Basename-Kollision wird als Eintrag
    mit `fehler` gemeldet, nie still verschluckt."""
    if not config.PROJEKTE_DATEI.is_file():
        return []
    out: list[dict] = []
    gesehen: dict[str, str] = {}
    for zeile in config.PROJEKTE_DATEI.read_text(encoding="utf-8").splitlines():
        zeile = zeile.strip()
        if not zeile or zeile.startswith("#"):
            continue
        pfad = Path(zeile).expanduser()
        name = pfad.name
        eintrag = {"name": name, "pfad": str(pfad)}
        if not pfad.is_dir():
            eintrag["fehler"] = "Pfad existiert nicht"
        elif name in gesehen:
            eintrag["fehler"] = f"Namenskollision mit {gesehen[name]}"
        else:
            gesehen[name] = str(pfad)
        out.append(eintrag)
    return out


def finde(name: str) -> Path | None:
    for p in lade():
        if p["name"] == name and "fehler" not in p:
            return Path(p["pfad"])
    return None
