#!/usr/bin/env bash # Aktualisiert den llama-swap-Router (mostlygeek/llama-swap) auf den neuesten Release. # Wird vom MC2-„Router Update"-Button via `sudo bash …` als ROOT aufgerufen # (deshalb KEIN internes sudo). Ersetzt die Binary und startet llama-swap neu. set -euo pipefail SWAP_BIN="${MC_SWAP_BIN:-/usr/local/bin/llama-swap}" PIN_VER="${MC_SWAP_VERSION:-}" # leer = neuester Release if [ -n "$PIN_VER" ]; then TAG="$PIN_VER" else TAG="$(curl -s https://api.github.com/repos/mostlygeek/llama-swap/releases/latest | jq -r .tag_name)" fi [ -n "$TAG" ] && [ "$TAG" != "null" ] || { echo "Konnte neuesten Release-Tag nicht ermitteln"; exit 1; } # Asset-Name nutzt die nackte Nummer (z.B. v230 -> 230): llama-swap_230_linux_amd64.tar.gz NUM="${TAG#v}" ASSET="llama-swap_${NUM}_linux_amd64.tar.gz" URL="https://github.com/mostlygeek/llama-swap/releases/download/${TAG}/${ASSET}" TMP="$(mktemp -d)" trap 'rm -rf "$TMP"' EXIT echo "Lade llama-swap ${TAG} …" curl -fsSL -o "$TMP/s.tgz" "$URL" tar xzf "$TMP/s.tgz" -C "$TMP" NEW="$(find "$TMP" -type f -name llama-swap | head -1)" [ -n "$NEW" ] || { echo "llama-swap-Binary im Archiv nicht gefunden"; exit 1; } install -m 0755 "$NEW" "$SWAP_BIN" test -x "$SWAP_BIN" systemctl restart llama-swap echo "Router aktualisiert auf ${TAG} und llama-swap neugestartet."