#!/bin/bash
set -euo pipefail

DRY_RUN=true
ACCOUNT="licenciasorigina"

usage() {
  echo "Usage: $0 [--dry-run|--apply]"
  echo "  --dry-run  Mostrar qué haría (default)"
  echo "  --apply    Ejecutar de verdad"
  exit 1
}

while [[ $# -gt 0 ]]; do
  case $1 in
    --dry-run) DRY_RUN=true; shift ;;
    --apply)   DRY_RUN=false; shift ;;
    *) usage ;;
  esac
done

CWD=$(pwd)
if [[ "$CWD" != "/home/${ACCOUNT}/public_html"* ]]; then
  echo "[ERROR] apply.sh debe ejecutarse desde /home/${ACCOUNT}/public_html/"
  echo "        Actualmente en: $CWD"
  exit 1
fi

MANIFEST="manifest.json"
if [[ ! -f "$MANIFEST" ]]; then
  echo "[ERROR] No se encontró $MANIFEST"
  exit 1
fi

PATHS=$(grep -o '"img/p/[^"]*"' "$MANIFEST" | tr -d '"' || true)
COUNT_DIRS=$(echo "$PATHS" | wc -l)

if [[ "$DRY_RUN" == "true" ]]; then
  echo "[DRY RUN] Aplicaría chown ${ACCOUNT}:${ACCOUNT} en ${COUNT_DIRS} directorios:"
  echo "$PATHS" | head -5
  echo "..."
  echo "[DRY RUN] Aplicaría chmod 755 dirs, 644 files"
  echo "[DRY RUN] Ejecuta con --apply para ejecutar de verdad"
  exit 0
fi

echo "[APPLY] Aplicando ownership y permisos..."
FILES_TOTAL=0
for path in $PATHS; do
  if [[ ! -d "$path" ]]; then
    echo "[WARN] Path no existe: $path"
    continue
  fi
  if [[ "$path" != img/p/* ]]; then
    echo "[ERROR] Path fuera de whitelist: $path"
    exit 1
  fi
  chown -R "${ACCOUNT}:${ACCOUNT}" "$path"
  chmod 755 "$path"
  find "$path" -type f -exec chmod 644 {} \;
  FILES_HERE=$(find "$path" -type f | wc -l)
  FILES_TOTAL=$((FILES_TOTAL + FILES_HERE))
done

echo "[OK] ${COUNT_DIRS} directorios, ${FILES_TOTAL} archivos desplegados con chown ${ACCOUNT}:${ACCOUNT}"
