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

# Uso:
#   scripts/clear_symfony_cache.sh [env] [project_root]
# Ejemplos:
#   scripts/clear_symfony_cache.sh dev
#   scripts/clear_symfony_cache.sh prod /Users/manuelbustamante/proyectosweb/mbinv

ENVIRONMENT="${1:-dev}"
PROJECT_ROOT="${2:-$(cd "$(dirname "$0")/.." && pwd)}"
WEB_USER="${WEB_USER:-_www}"
CURRENT_USER="$(id -un)"

CACHE_DIR="$PROJECT_ROOT/app/cache"
LOGS_DIR="$PROJECT_ROOT/app/logs"
CONSOLE="$PROJECT_ROOT/app/console"

if [[ ! -f "$CONSOLE" ]]; then
  echo "Error: no existe app/console en $PROJECT_ROOT" >&2
  exit 1
fi

if [[ ! -d "$CACHE_DIR" || ! -d "$LOGS_DIR" ]]; then
  echo "Error: no existe app/cache o app/logs en $PROJECT_ROOT" >&2
  exit 1
fi

echo "== Symfony Cache Cleaner =="
echo "Proyecto : $PROJECT_ROOT"
echo "Entorno  : $ENVIRONMENT"
echo "Web user : $WEB_USER"
echo

echo "[1/4] Asegurando estructura de directorios..."
sudo mkdir -p "$CACHE_DIR/$ENVIRONMENT" "$LOGS_DIR"

echo "[2/4] Ajustando owner/permisos base..."
sudo chown -R "$CURRENT_USER:$WEB_USER" "$CACHE_DIR" "$LOGS_DIR"
sudo chmod -R 775 "$CACHE_DIR" "$LOGS_DIR"
sudo find "$CACHE_DIR" "$LOGS_DIR" -type d -exec chmod g+s {} \;

echo "[3/4] Aplicando ACL para usuario web y usuario actual..."
# macOS ACL: permite escritura para ambos, incluso en archivos/directorios nuevos.
sudo chmod -R +a "$CURRENT_USER allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit" "$CACHE_DIR" "$LOGS_DIR" 2>/dev/null || true
sudo chmod -R +a "$WEB_USER allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit" "$CACHE_DIR" "$LOGS_DIR" 2>/dev/null || true

echo "[4/4] Limpiando cache como usuario web ($WEB_USER)..."
sudo -u "$WEB_USER" php "$CONSOLE" cache:clear --env="$ENVIRONMENT"

echo
echo "OK: cache limpia y permisos reparados para $ENVIRONMENT."
