#!/usr/bin/env bash
# Limpia UDL FreeMarker viejos e instala «FM TRAMITA» (v14).
# Descargado desde Tzero: downloads/notepadpp/
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
UDL_SRC="$SCRIPT_DIR/FM TRAMITA.xml"
AC_SRC="$SCRIPT_DIR/autoCompletion/FM TRAMITA.xml"
STAGING_DIR="$SCRIPT_DIR/autoCompletion/staging"
LANG_NAME="FM TRAMITA"

NPP="${1:-}"
if [[ -z "$NPP" ]]; then
  for candidate in \
    "/c/Program Files/Notepad++/notepad++.exe" \
    "/c/Program Files (x86)/Notepad++/notepad++.exe"; do
    if [[ -f "$candidate" ]]; then
      NPP="$(dirname "$candidate")"
      break
    fi
  done
fi

if [[ ! -f "$UDL_SRC" ]]; then
  echo "ERROR: falta $UDL_SRC" >&2
  exit 1
fi

UDL_DIR="${APPDATA:-$HOME/AppData/Roaming}/Notepad++/userDefineLangs"
MERGED="${APPDATA:-$HOME/AppData/Roaming}/Notepad++/userDefineLang.xml"
mkdir -p "$UDL_DIR" "$STAGING_DIR"

shopt -s nullglob
for f in "$UDL_DIR"/*.xml; do
  case "$(basename "$f")" in
    FreeMarker*|freemarker*|FM\ TRAMITA.xml|FM-TRAMITA*.xml)
      echo "Eliminando: $f"
      rm -f "$f"
      ;;
  esac
done
shopt -u nullglob

DEST="$UDL_DIR/$LANG_NAME.xml"
cp -f "$UDL_SRC" "$DEST"
echo "OK → $DEST"

if [[ -n "$NPP" && -d "$NPP" ]]; then
  PDIR="$NPP/userDefineLangs"
  mkdir -p "$PDIR"
  for f in "$PDIR"/*.xml; do
    case "$(basename "$f")" in
      FreeMarker*|freemarker*|FM\ TRAMITA.xml|FM-TRAMITA*.xml)
        rm -f "$f"
        ;;
    esac
  done
  cp -f "$UDL_SRC" "$PDIR/$LANG_NAME.xml"
  echo "OK portable → $PDIR/$LANG_NAME.xml"
  if [[ -f "$AC_SRC" ]]; then
    AUTO="$NPP/autoCompletion"
    if mkdir -p "$AUTO" 2>/dev/null && cp -f "$AC_SRC" "$AUTO/$LANG_NAME.xml" 2>/dev/null; then
      echo "OK autoCompletion"
    else
      cp -f "$AC_SRC" "$STAGING_DIR/$LANG_NAME.xml"
      echo "AVISO: autoCompletion → copiar con admin desde $STAGING_DIR/" >&2
    fi
  fi
fi

echo ""
echo "=== OBLIGATORIO (N++ 8.7.5+ / 8.9.x) ==="
echo "1) Cierra Notepad++ por completo (todas las ventanas)."
echo "2) Ábrelo → Lenguaje → Definir su lenguaje…"
echo "3) Remove «FreeMarker TRAMITA», «FreeMarker 2.3.16» y cualquier FreeMarker viejo."
echo "4) Importar → $UDL_SRC"
echo "5) Guardar como…"
echo "6) Reinicia Notepad++ otra vez."
echo "7) test-highlight.txt → Lenguaje → «$LANG_NAME»"
echo ""
echo "Doc: https://tramitazero.robertog.es/?p=notepadpp"
if [[ -f "$MERGED" ]]; then
  echo ""
  echo "Si sigue igual: backup y borra $MERGED con N++ cerrado."
fi
