#!/usr/bin/env bash
set -euo pipefail

# Dieses Skript auf dem ZIEL-LXC ausfuehren.
# Es richtet die Ordnerstruktur und Preflight-Checks fuer den Hördle-Betrieb ein.

APP_DIR="${APP_DIR:-/opt/hoerdle}"
APP_USER="${APP_USER:-docker}"
APP_GROUP="${APP_GROUP:-docker}"

echo "== Prepare target LXC for Hördle =="
echo "APP_DIR=$APP_DIR"
echo "APP_USER=$APP_USER"
echo

require_cmd() {
  if ! command -v "$1" >/dev/null 2>&1; then
    echo "Fehlend: $1"
    exit 1
  fi
}

require_cmd docker

if ! docker compose version >/dev/null 2>&1; then
  echo "docker compose Plugin fehlt."
  exit 1
fi

echo "-- Docker Version --"
docker --version
docker compose version
echo

echo "-- Verzeichnisse vorbereiten --"
mkdir -p "$APP_DIR"/{data,public/uploads,logs,backups}
chown -R "$APP_USER:$APP_GROUP" "$APP_DIR"
chmod 755 "$APP_DIR"
chmod 755 "$APP_DIR/data" "$APP_DIR/public" "$APP_DIR/public/uploads"
echo "Ordner vorbereitet."
echo

echo "-- Speichercheck --"
df -h "$APP_DIR"
echo

echo "-- Netzwerkcheck --"
if ! docker network inspect hoerdle_default >/dev/null 2>&1; then
  echo "Docker-Netzwerk hoerdle_default fehlt, wird erstellt."
  docker network create hoerdle_default >/dev/null
fi
echo "Netzwerk hoerdle_default bereit."
echo

echo "-- .env Vorlage --"
if [ ! -f "$APP_DIR/.env" ]; then
  if [ -f "$APP_DIR/.env.proxmox.example" ]; then
    cp "$APP_DIR/.env.proxmox.example" "$APP_DIR/.env"
    echo ".env aus .env.proxmox.example erstellt."
  elif [ -f "$APP_DIR/.env.example" ]; then
    cp "$APP_DIR/.env.example" "$APP_DIR/.env"
    echo ".env aus .env.example erstellt."
  else
    echo "Keine Env-Vorlage gefunden. Bitte .env manuell erstellen."
  fi
else
  echo ".env existiert bereits, kein Override."
fi
echo

echo "-- Abschluss --"
echo "Target-LXC vorbereitet. Nächster Schritt: Daten-Vorabkopie aus der Quelle."
