#!/usr/bin/env bash
# pc_path_lookup.sh — YAML-Cache für Windows-PC-Pfade (~/.hermes/pc-paths.yaml).
#
# REINER Cache, bewusst OHNE PC-Suche: `pc_shell` ist ein Agent-Tool, kein Binary —
# der ursprüngliche Entwurf rief es als Shell-Befehl auf und konnte nie funktionieren.
# Die Suche bei Cache-Miss macht der AGENT selbst (pc_shell-Tool) und legt den Fund
# danach hier per `merken` ab. Siehe deploy/skills/pc-pfad-cache/SKILL.md.
#
# Aufrufe:
#   pc_path_lookup.sh lookup <key>          → Pfad auf stdout (exit 0) | exit 3 = Cache-Miss
#   pc_path_lookup.sh merken <key> <pfad>   → Eintrag anlegen/aktualisieren
#   pc_path_lookup.sh liste                 → alle Einträge (key<TAB>pfad)
set -euo pipefail

MODUS="${1:?FEHLT: lookup|merken|liste}"
YAML_FILE="$HOME/.hermes/pc-paths.yaml"
PY="$HOME/.hermes/hermes-agent/venv/bin/python"
[ -x "$PY" ] || PY=python3

normalize() {
  # Umlaute ZUERST ausschreiben (beide Fälle — tr lowercased kein Ä/Ö/Ü), dann klein,
  # Leerzeichen → Bindestrich
  printf '%s' "$1" \
    | sed 's/Ä/ae/g; s/Ö/oe/g; s/Ü/ue/g; s/ä/ae/g; s/ö/oe/g; s/ü/ue/g; s/ß/ss/g' \
    | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g'
}

case "$MODUS" in
  lookup)
    KEY=$(normalize "${2:?FEHLT: key}")
    "$PY" - "$YAML_FILE" "$KEY" <<'PYEOF'
import sys, yaml
try:
    data = yaml.safe_load(open(sys.argv[1])) or {}
except FileNotFoundError:
    data = {}
apps = data.get("apps") or {}
if sys.argv[2] in apps:
    print(apps[sys.argv[2]])
else:
    sys.exit(3)
PYEOF
    ;;
  merken)
    KEY=$(normalize "${2:?FEHLT: key}")
    PFAD="${3:?FEHLT: pfad}"
    "$PY" - "$YAML_FILE" "$KEY" "$PFAD" <<'PYEOF'
import sys, yaml
try:
    data = yaml.safe_load(open(sys.argv[1])) or {}
except FileNotFoundError:
    data = {}
data.setdefault("apps", {})[sys.argv[2]] = sys.argv[3]
yaml.safe_dump(data, open(sys.argv[1], "w"), allow_unicode=True, default_flow_style=False)
print(f"gemerkt: {sys.argv[2]} -> {sys.argv[3]}")
PYEOF
    ;;
  liste)
    "$PY" - "$YAML_FILE" <<'PYEOF'
import sys, yaml
try:
    data = yaml.safe_load(open(sys.argv[1])) or {}
except FileNotFoundError:
    data = {}
for k, v in sorted((data.get("apps") or {}).items()):
    print(f"{k}\t{v}")
PYEOF
    ;;
  *)
    echo "FEHLT: lookup|merken|liste" >&2; exit 2 ;;
esac
