#!/bin/bash
# =============================================================================
# SignageMagic Player - APT-Quelle einrichten & installieren
#
# Einmalig auf jedem Geraet ausfuehren:
#   curl -fsSL https://apt.signagemagic.de/setup.sh | sudo bash
#   # oder:
#   sudo bash setup-apt.sh
#
# Unterstuetzte Architekturen: armhf, arm64, amd64
#
# Danach reicht fuer Updates:
#   sudo apt update && sudo apt upgrade
# =============================================================================
set -e

APT_REPO_URL="https://apt.signagemagic.de"
GPG_KEY_URL="${APT_REPO_URL}/signagemagic.gpg"
GPG_KEYRING="/usr/share/keyrings/signagemagic-archive-keyring.gpg"

RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'

info() { echo -e "${GREEN}[INFO]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1"; }

# Root-Check
if [ "$EUID" -ne 0 ]; then
    error "Bitte als root ausfuehren: sudo bash setup-apt.sh"
    exit 1
fi

echo ""
echo "============================================"
echo "  SignageMagic Player - APT Setup"
echo "============================================"
echo ""

# 1) GPG-Schluessel herunterladen und importieren
info "Importiere GPG-Schluessel..."

# ca-certificates fuer HTTPS sicherstellen
if ! command -v curl &>/dev/null; then
    apt-get update -qq && apt-get install -y -qq curl ca-certificates
fi

curl -fsSL "${GPG_KEY_URL}" | gpg --dearmor -o "${GPG_KEYRING}"
chmod 644 "${GPG_KEYRING}"

# 2) APT-Quelle mit GPG-Signaturpruefung hinzufuegen
info "Fuege APT-Quelle hinzu..."
cat > /etc/apt/sources.list.d/signagemagic.list <<EOF
deb [signed-by=${GPG_KEYRING}] ${APT_REPO_URL}/ ./
EOF

# 3) Alte Installation entfernen (Architecture: all -> architekturspezifisch)
if dpkg -l signagemagic 2>/dev/null | grep -q "^ii.*all"; then
    info "Entferne alte Installation (Architecture: all)..."
    systemctl stop signagemagic 2>/dev/null || true
    dpkg --purge signagemagic 2>/dev/null || true
    rm -rf /opt/signagemagic/src /opt/signagemagic/pyarmor_runtime_000000 /opt/signagemagic/.venv
fi

# 4) Paketindex aktualisieren
info "Aktualisiere Paketindex..."
apt-get update

# 5) Paket installieren (architekturspezifisch)
# Unterstuetzte Architekturen: amd64, arm64, armhf
# Falls primaere Arch nicht unterstuetzt (z.B. i386), pruefe Foreign-Architekturen
ARCH=$(dpkg --print-architecture)
SUPPORTED_ARCHS="amd64 arm64 armhf"

if ! echo "${SUPPORTED_ARCHS}" | grep -qw "${ARCH}"; then
    info "Primaere Architektur ${ARCH} nicht unterstuetzt, pruefe Foreign-Architekturen..."
    ARCH=""
    for FOREIGN in $(dpkg --print-foreign-architectures 2>/dev/null); do
        if echo "${SUPPORTED_ARCHS}" | grep -qw "${FOREIGN}"; then
            ARCH="${FOREIGN}"
            break
        fi
    done
    if [ -z "${ARCH}" ]; then
        error "Keine unterstuetzte Architektur gefunden (${SUPPORTED_ARCHS})."
        error "Foreign-Architekturen: $(dpkg --print-foreign-architectures 2>/dev/null || echo 'keine')"
        exit 1
    fi
    # Foreign-Architektur aktivieren falls noch nicht geschehen
    dpkg --add-architecture "${ARCH}" 2>/dev/null || true
    apt-get update -qq
fi

info "Installiere signagemagic fuer ${ARCH}..."
apt-get install -y signagemagic:${ARCH}

echo ""
echo "============================================"
echo "  Installation abgeschlossen!"
echo "============================================"
echo ""
echo "  Service starten:"
echo "    sudo systemctl start signagemagic"
echo ""
echo "  Logs anzeigen:"
echo "    journalctl -u signagemagic -f"
echo ""
echo "  Fuer Updates:"
echo "    sudo apt update && sudo apt upgrade"
echo ""
