#!/usr/bin/env bash
set -euo pipefail
umask 002

# Determinar raíz del proyecto (dos niveles arriba de este script)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="${SCRIPT_DIR%/tools}"
BACKUPS_DIR="${ROOT_DIR}/backups"
mkdir -p "$BACKUPS_DIR" || { echo "ERROR: No se pudo crear $BACKUPS_DIR"; exit 1; }
chmod 775 "$BACKUPS_DIR" >/dev/null 2>&1 || true

if [ ! -w "$BACKUPS_DIR" ]; then
  echo "ERROR: Sin permisos de escritura en $BACKUPS_DIR. Ajustá ownership/permisos para el usuario del servidor web."
  exit 1
fi

TS="$(date +%Y%m%d_%H%M%S)"
OUT_ZIP="${BACKUPS_DIR}/backup_${TS}.zip"

# Verificar que 'zip' esté disponible; si no, intentar tar.gz
if command -v zip >/dev/null 2>&1; then
  cd "$ROOT_DIR"
  # Excluir directorios comunes que no queremos incluir
  zip -r "$OUT_ZIP" . \
    -x "*/.git/*" \
    -x "backups/*" \
    -x "*/node_modules/*" \
    -x "*/vendor/*" \
    -x "*.zip"
  echo "OK: ZIP generado en $OUT_ZIP"
else
  OUT_TGZ="${BACKUPS_DIR}/backup_${TS}.tar.gz"
  cd "$ROOT_DIR"
  tar --exclude="./.git" --exclude="./backups" --exclude="./node_modules" --exclude="./vendor" -czf "$OUT_TGZ" .
  echo "OK: TAR.GZ generado en $OUT_TGZ (zip no disponible)"
fi
