#!/usr/bin/env bash
# backup.sh – Záloha workspace před destruktivní akcí
# Použití: bash scripts/backup.sh [zpráva]
# Výstup:  ~/Projekty/CyberBrain26/backups/backup_YYYY-MM-DD_HH-MM-SS.tar.gz
#          + git commit se zprávou

set -euo pipefail

PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/.."
BACKUP_DIR="$PROJECT_DIR/backups"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
MESSAGE="${1:-auto-backup před akcí}"
BACKUP_FILE="$BACKUP_DIR/backup_${TIMESTAMP}.tar.gz"

mkdir -p "$BACKUP_DIR"

echo "[backup.sh] 🔄 Spouštím zálohu: $TIMESTAMP"
echo "[backup.sh] 📁 Projekt: $PROJECT_DIR"
echo "[backup.sh] 💾 Výstup: $BACKUP_FILE"

# Tar snapshot workspace (vyloučí venv, chroma_db, backups, __pycache__)
tar -czf "$BACKUP_FILE" \
  --exclude='*/venv' \
  --exclude='*/__pycache__' \
  --exclude='*/backups' \
  --exclude='*/workspace/chroma_db' \
  --exclude='*/.git' \
  -C "$(dirname "$PROJECT_DIR")" \
  "$(basename "$PROJECT_DIR")"

echo "[backup.sh] ✅ Tar snapshot uložen: $BACKUP_FILE"
echo "[backup.sh] 📝 Velikost: $(du -sh "$BACKUP_FILE" | cut -f1)"

# Git commit aktuálního stavu (pokud je git repo)
if git -C "$PROJECT_DIR" rev-parse --git-dir > /dev/null 2>&1; then
  git -C "$PROJECT_DIR" add -A 2>/dev/null || true
  git -C "$PROJECT_DIR" commit -m "backup: $MESSAGE ($TIMESTAMP)" 2>/dev/null || echo "[backup.sh] ℹ️  Nic nového pro git commit"
  echo "[backup.sh] ✅ Git commit proveden"
else
  echo "[backup.sh] ⚠️  Není git repo, přeskakuji git commit"
fi

# Zápis do change_summary logu
LOG_FILE="$PROJECT_DIR/logs/change_summary.log"
mkdir -p "$PROJECT_DIR/logs"
echo "[$TIMESTAMP] BACKUP | $MESSAGE | soubor: $(basename "$BACKUP_FILE")" >> "$LOG_FILE"

echo "[backup.sh] 📋 Zapsáno do logs/change_summary.log"
echo "[backup.sh] 🟢 Záloha dokončena. Nyní je bezpečné provést akci."
