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

PROJECT_ROOT="${1:-$(cd "$(dirname "$0")/.." && pwd)}"
OWNER_USER="${2:-$(id -un)}"
if [[ $# -ge 3 ]]; then
  OWNER_GROUP="$3"
elif getent group www-data >/dev/null 2>&1; then
  OWNER_GROUP="www-data"
else
  OWNER_GROUP="$(id -gn)"
fi

CACHE_DIR="$PROJECT_ROOT/app/cache"
LOGS_DIR="$PROJECT_ROOT/app/logs"
SESSIONS_DIR="$PROJECT_ROOT/app/sessions"
DEFAULTS_JSON="$PROJECT_ROOT/defaults.json"
INDICES_JSON="$PROJECT_ROOT/indices.json"

if [[ ! -d "$PROJECT_ROOT" ]]; then
  echo "Error: no existe el proyecto: $PROJECT_ROOT" >&2
  exit 1
fi

if [[ ! -d "$CACHE_DIR" ]]; then
  echo "Error: no existe directorio cache: $CACHE_DIR" >&2
  exit 1
fi

if [[ ! -d "$LOGS_DIR" ]]; then
  echo "Error: no existe directorio logs: $LOGS_DIR" >&2
  exit 1
fi

if [[ ! -d "$SESSIONS_DIR" ]]; then
  mkdir -p "$SESSIONS_DIR"
fi

echo "Aplicando permisos en:"
echo "- $CACHE_DIR"
echo "- $LOGS_DIR"
echo "- $SESSIONS_DIR"
if [[ -f "$DEFAULTS_JSON" ]]; then
  echo "- $DEFAULTS_JSON"
fi
if [[ -f "$INDICES_JSON" ]]; then
  echo "- $INDICES_JSON"
fi
echo "Owner: $OWNER_USER:$OWNER_GROUP"

sudo chown -R "$OWNER_USER:$OWNER_GROUP" "$CACHE_DIR" "$LOGS_DIR" "$SESSIONS_DIR"
sudo chmod -R ug+rwX "$CACHE_DIR" "$LOGS_DIR" "$SESSIONS_DIR"

# Permisos para archivos de configuración que necesitan escritura desde la aplicación
if [[ -f "$DEFAULTS_JSON" ]]; then
  sudo chown "$OWNER_USER:$OWNER_GROUP" "$DEFAULTS_JSON"
  sudo chmod 664 "$DEFAULTS_JSON"
fi

if [[ -f "$INDICES_JSON" ]]; then
  sudo chown "$OWNER_USER:$OWNER_GROUP" "$INDICES_JSON"
  sudo chmod 664 "$INDICES_JSON"
fi

echo "Permisos aplicados."
echo "Siguiente paso sugerido:"
echo "php $PROJECT_ROOT/app/console cache:clear --env=dev --no-warmup"
