#!/bin/bash

# Abbrechen bei Fehlern
set -e

# --- KONFIGURATION ---
GIT_REPO_PATH="./git-repo"
TARGETS=("linux-tom" "linux-tom-headers" "linux-tom-docs")

# 1. Pakete bauen
# -s: Abhängigkeiten, -f: Überschreiben, -c: Aufräumen
echo "Starte Build-Prozess..."
makepkg -sfc --noconfirm

# 2. Version extrahieren
VERSION=$(grep '^pkgver=' PKGBUILD | cut -d= -f2)
REL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2)
FULL_VER_PATTERN="${VERSION}-${REL}"

# 3. Git-Verzeichnis vorbereiten
mkdir -p "$GIT_REPO_PATH"

echo "Aktualisiere Dateien in $GIT_REPO_PATH..."
FILES_TO_INSTALL=()

for name in "${TARGETS[@]}"; do
    found_file=$(ls ${name}-${FULL_VER_PATTERN}-*.pkg.tar.zst 2>/dev/null | head -n 1)

    if [ -f "$found_file" ]; then
        DEST_FILE="$GIT_REPO_PATH/${name}.pkg.tar.zst"
        cp "$found_file" "$DEST_FILE"
        echo "${VERSION}-${REL}" > "$GIT_REPO_PATH/${name}.version"
        FILES_TO_INSTALL+=("$DEST_FILE")
    fi
done

# 4. Installation der neuen Pakete
if [ ${#FILES_TO_INSTALL[@]} -gt 0 ]; then
    echo "Installiere Pakete lokal..."
    sudo pacman -U --noconfirm "${FILES_TO_INSTALL[@]}"
else
    echo "Fehler: Keine Pakete zum Installieren gefunden!"
    exit 1
fi

# 5. Git-Upload (Commit & Push)
cd "$GIT_REPO_PATH"
if [ -d "../.git" ]; then
    # Vor dem Push die neuesten Änderungen vom Server holen
    git pull --rebase --autostash

    git add *.pkg.tar.zst *.version
    
    # Prüfen, ob es Änderungen zum Committen gibt
    if ! git diff-index --quiet HEAD; then
        echo "Commit und Push der neuen Version $VERSION-$REL..."
        git commit -m "Kernel Update: $VERSION-$REL"
        git push
        echo "Erfolgreich auf den Server hochgeladen."
    else
        echo "Keine Änderungen vorhanden, Push nicht notwendig."
    fi
else
    echo "Warnung: Kein Git-Repository in $GIT_REPO_PATH gefunden."
fi

echo "Vorgang abgeschlossen."
