#!/usr/bin/env bash
# Backup pre-evento — copia todo lo crítico a un tarball portable
# Uso: bash scripts/backup-pre-event.sh
#
# Genera ~/karaoke-backup-YYYYMMDD-HHMM.tar.gz con:
#   - songs/            (MP3 originales — lo más caro de recuperar)
#   - songs-karaoke/    (MP3 procesados sin vocal)
#   - lyrics/           (LRC sincronizados)
#   - scripts/ player/ admin/  (código)
#   - *.md              (docs operativos)
# Excluye admin/.env por seguridad.
set -euo pipefail

PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$PROJECT_ROOT"

STAMP="$(date +%Y%m%d-%H%M)"
BACKUP_DIR="$HOME/karaoke-backup-${STAMP}"
mkdir -p "$BACKUP_DIR"

echo "▶ Copiando songs/ (MP3 originales)..."
[ -d songs ] && cp -r songs/ "$BACKUP_DIR/" || echo "  ⚠ songs/ no existe — saltando"

echo "▶ Copiando songs-karaoke/ (MP3 procesados)..."
[ -d songs-karaoke ] && cp -r songs-karaoke/ "$BACKUP_DIR/" || echo "  ⚠ songs-karaoke/ no existe — saltando"

echo "▶ Copiando lyrics/ (LRC sincronizados)..."
[ -d lyrics ] && cp -r lyrics/ "$BACKUP_DIR/" || echo "  ⚠ lyrics/ no existe — saltando"

echo "▶ Copiando scripts/ player/ admin/..."
[ -d scripts ] && cp -r scripts/ "$BACKUP_DIR/"
[ -d player  ] && cp -r player/  "$BACKUP_DIR/"
[ -d admin   ] && cp -r admin/   "$BACKUP_DIR/"

echo "▶ Copiando archivos de configuración raíz..."
[ -f serve.json ] && cp serve.json "$BACKUP_DIR/"
[ -f requirements-admin.txt ] && cp requirements-admin.txt "$BACKUP_DIR/"

echo "▶ Copiando docs .md..."
cp ./*.md "$BACKUP_DIR/" 2>/dev/null || true

echo "▶ Excluyendo secretos..."
rm -f "$BACKUP_DIR/admin/.env"
rm -f "$BACKUP_DIR/scripts/.spotify.env"
# Limpiar caches de python
find "$BACKUP_DIR" -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true

echo "▶ Generando tarball comprimido..."
TARBALL="${BACKUP_DIR}.tar.gz"
tar -czf "$TARBALL" -C "$(dirname "$BACKUP_DIR")" "$(basename "$BACKUP_DIR")"
rm -rf "$BACKUP_DIR"

SIZE=$(du -h "$TARBALL" | cut -f1)
echo ""
echo "✓ Backup completo: $TARBALL ($SIZE)"
echo ""
echo "  PRÓXIMOS PASOS (antes de salir hacia el evento):"
echo "  1. Copia el tarball a un USB stick:"
echo "       cp \"$TARBALL\" /media/<usb-mount>/"
echo "  2. Copia el tarball a la nube (Drive/Mega/MEGAcmd/rclone)"
echo "  3. Verifica el tarball:"
echo "       tar -tzf \"$TARBALL\" | head"
echo ""
