#!/usr/bin/env bash
# =============================================================================
# Bootstrapper: laedt ein Release herunter und ruft dessen install.sh auf.
# Enthaelt selbst keinerlei Installationslogik.
#
# Zwei Fallen des Vorgaengers sind hier bewusst vermieden:
#   * Der Tag "latest" wird ueber die API aufgeloest, nie direkt in die
#     Download-URL geschrieben. Gitea liefert sonst mit HTTP 200 ein
#     automatisch erzeugtes Quell-Snapshot statt des echten Release-Assets.
#   * Nach dem Entpacken wird geprueft, dass ein install.sh existiert -- faengt
#     denselben Fehler ein zweites Mal ab.
# =============================================================================
set -euo pipefail

APP="${1:-}"
TAG="${2:-latest}"
BASE="${TESM_RELEASE_BASE:-https://gitea.example.invalid}"
OWNER="${TESM_RELEASE_OWNER:-wis}"
REPO="${TESM_RELEASE_REPO:-tesm}"

[[ "$APP" == "tesm" || "$APP" == "tesm-license" ]] || {
  echo "Verwendung: update.sh <tesm|tesm-license> [tag]" >&2
  exit 2
}

WORK="$(mktemp -d /tmp/tesm-update-XXXXXX)"
trap 'rm -rf "$WORK"' EXIT   # anders als im Vorgaenger wird aufgeraeumt

if [[ "$TAG" == "latest" ]]; then
  echo "==> Ermittle aktuellen Release-Tag ..."
  TAG="$(curl -fsS "$BASE/api/v1/repos/$OWNER/$REPO/releases/latest" \
        | python3 -c 'import json,sys; print(json.load(sys.stdin)["tag_name"])')"
  echo "    $TAG"
fi

ASSET="$REPO-$TAG.tar.gz"
echo "==> Lade $ASSET ..."
curl -fsSL -o "$WORK/$ASSET" "$BASE/$OWNER/$REPO/releases/download/$TAG/$ASSET"

echo "==> Entpacke ..."
tar -xzf "$WORK/$ASSET" -C "$WORK"
SRC="$(find "$WORK" -maxdepth 2 -name install.sh -path '*/deploy/*' -printf '%h/..\n' | head -1)"
[[ -n "$SRC" ]] || { echo "Im Paket fehlt deploy/install.sh -- Download unbrauchbar." >&2; exit 1; }
SRC="$(cd "$SRC" && pwd)"

echo "==> Pruefe auf CRLF (Windows-Buildmaschinen) ..."
if file "$SRC/deploy/install.sh" | grep -q CRLF; then
  echo "Das Paket enthaelt CRLF-Zeilenenden. Beim Paketieren fehlte" >&2
  echo "'git -c core.autocrlf=false archive'." >&2
  exit 1
fi

read -r -p "Version $TAG fuer $APP installieren? [j/N] " answer
[[ "$answer" =~ ^[jJyY]$ ]] || exit 0

exec sudo bash "$SRC/deploy/install.sh" --app "$APP" --yes
