#!/bin/bash

# 1. Basis-Setup & Analyse
TARGET_DIR=$(pwd)
echo "--- abas Snapshot Analyse (Pfad: $TARGET_DIR) ---"

# Prüfen ob ow* Ordner da sind
if ls -d ow* >/dev/null 2>&1; then
    echo "Gefundene Ordner: ow*"
    echo "--------------------------------"
    echo "Die 5 größten Dateien/Ordner:"
    du -ah ow* 2>/dev/null | sort -rh | head -n 5
    echo "--------------------------------"
    
    # Abfragen für Ignorier-Liste und Fortfahren
    read -p "Ordner IGNORIEREN? (Mehrere mit Leerzeichen trennen, z.B. owbelege owtemp): " IGNORE_INPUT < /dev/tty
    read -p "Soll der Sync jetzt gestartet werden? (y/n): " confirm < /dev/tty
    [[ "$confirm" != "y" ]] && exit 0
else
    echo "FEHLER: Keine 'ow*' Ordner im aktuellen Verzeichnis gefunden."
    exit 1
fi

# 2. Git Initialisierung
# Alten Müll entfernen, falls vorhanden
rm -rf .git .gitignore
git init -b main

# Sicherheitsausnahme für dieses Verzeichnis setzen
git config --global --add safe.directory "$TARGET_DIR"
git config user.name "abas Snapshot"
git config user.email "snapshot@senapsa.com"

# 3. Git-Credentials & Infos abfragen
ask() {
    local prompt=$1
    local var_name=$2
    local secret=$3
    if [ "$secret" = "silent" ]; then
        read -s -p "$prompt" value < /dev/tty
        echo "" > /dev/tty
    else
        read -p "$prompt" value < /dev/tty
    fi
    eval $var_name='$value'
}

ask "Git-Benutzername: " GIT_USER
ask "Passwort/Token: " GIT_PASS "silent"
ask "Git-Repo URL (ohne https://): " GIT_URL_RAW
ask "Commit Nachricht: " COMMIT_MSG
COMMIT_MSG=${COMMIT_MSG:-"Snapshot $TARGET_DIR - $(date +'%d.%m.%Y %H:%M')"}

# 4. Der "Sichere Add"-Befehl
# Wir bauen den Befehl so: git add ow* ':!ordner1' ':!ordner2'
ADD_CMD="git add ow*"

if [ ! -z "$IGNORE_INPUT" ]; then
    for item in $IGNORE_INPUT; do
        # :! ist die Git-Syntax für Ausschluss (Pathspec Magic)
        ADD_CMD="$ADD_CMD ':!$item'"
        echo "--> STRIKT EXKLUDIERT: $item"
    done
fi

# Ausführung des Add-Befehls
echo "Indiziere Daten (bitte warten)..."
eval "$ADD_CMD"

# 5. Commit & Push
GIT_AUTH_URL="https://${GIT_USER}:${GIT_PASS}@${GIT_URL_RAW}"

if git commit -m "$COMMIT_MSG" --quiet; then
    echo "Push läuft..."
    if git push --force "$GIT_AUTH_URL" main; then
        echo "------------------------------------------"
        echo "   ERFOLG: Snapshot wurde übertragen!     "
        echo "------------------------------------------"
    else
        echo "FEHLER: Push fehlgeschlagen (URL oder Token falsch?)."
    fi
else
    echo "HINWEIS: Keine Änderungen zum Committen gefunden."
fi

# 6. Aufräumen (Spuren vernichten)
git config --global --unset safe.directory "$TARGET_DIR"
rm -rf .git
rm -f .gitignore
unset GIT_PASS
unset GIT_AUTH_URL

echo "--- Fertig! Alle temporären Git-Daten wurden entfernt. ---"