#!/bin/bash
#
# Instala «Asistencia NTIC» en este Mac, en un solo paso.
#
# Qué hace (léelo antes de ejecutarlo; es corto):
#   1. detecta si tu Mac tiene chip Apple o procesador Intel;
#   2. descarga el instalador correcto desde https://soporteti.solucionesntic.cl/descargar;
#   3. lo copia a la carpeta Aplicaciones y comprueba que su firma esté íntegra;
#   4. abre la aplicación.
#
# (Nota técnica: en bash 3.2 —el de macOS— un «…» pegado a una variable se toma como parte de su nombre;
#  por eso todas las variables van entre llaves.)
#
# Por qué existe: los instaladores bajados con el navegador llevan la marca de «descargado de internet» y
# macOS pide una confirmación extra para las apps que aún no tienen cuenta de desarrollador de Apple.
# Descargado desde Terminal no lleva esa marca. No toca nada más que la carpeta de la aplicación.
#
set -euo pipefail

BASE="https://soporteti.solucionesntic.cl"
DESTINO="${ASISTENCIA_DESTINO:-/Applications}"
APP="Asistencia NTIC.app"

[ "$(uname -s)" = "Darwin" ] || { echo "Este instalador es solo para Mac."; exit 1; }

if [ "$(sysctl -n hw.optional.arm64 2>/dev/null || echo 0)" = "1" ]; then
  PLATAFORMA="mac-apple"; DESCRIPCION="Mac con chip Apple"
else
  PLATAFORMA="mac-intel"; DESCRIPCION="Mac con procesador Intel"
fi

# Sin permiso en /Applications (cuenta sin administrador), se instala en la carpeta del usuario.
if [ ! -w "${DESTINO}" ]; then
  DESTINO="${HOME}/Applications"
  mkdir -p "${DESTINO}"
fi

# Si la aplicación estaba abierta, el proceso viejo sigue vivo aunque se reemplace el archivo: se cierra primero.
osascript -e 'tell application "Asistencia NTIC" to quit' >/dev/null 2>&1 || true
sleep 1
pkill -f "Asistencia NTIC.app/Contents/MacOS" >/dev/null 2>&1 || true

TMP="$(mktemp -d)"
limpiar() { hdiutil detach "${TMP}/vol" -quiet >/dev/null 2>&1 || true; rm -rf "${TMP}"; }
trap limpiar EXIT

echo "▸ Descargando Asistencia NTIC para ${DESCRIPCION}…"
curl -fL --progress-bar -o "${TMP}/instalador.dmg" "${BASE}/descargar/${PLATAFORMA}"

echo "▸ Abriendo el instalador…"
mkdir "${TMP}/vol"
hdiutil attach -nobrowse -readonly -mountpoint "${TMP}/vol" -quiet "${TMP}/instalador.dmg"
[ -d "${TMP}/vol/${APP}" ] || { echo "El instalador no contiene ${APP}. Avisa a Soluciones NTIC."; exit 1; }

echo "▸ Instalando en ${DESTINO}…"
[ -n "${DESTINO}" ] && rm -rf "${DESTINO}/${APP}"
ditto "${TMP}/vol/${APP}" "${DESTINO}/${APP}"
xattr -dr com.apple.quarantine "${DESTINO}/${APP}" 2>/dev/null || true

echo "▸ Comprobando que la aplicación esté íntegra…"
codesign --verify --deep --strict "${DESTINO}/${APP}"

echo "✓ Instalada en ${DESTINO}/${APP}"

# Una inscripción hecha contra otro servidor (por ejemplo, una prueba que ya no existe) deja al equipo «Sin conexión».
# Se borra solo ese archivo: al abrirse, la aplicación se inscribe en este servidor y recibe su número.
CONFIG="${HOME}/Library/Application Support/Asistencia NTIC/configuracion.json"
if [ -f "${CONFIG}" ] && ! grep -qF "${BASE}" "${CONFIG}"; then
  echo "▸ Este Mac estaba inscrito en otro servidor; se vuelve a inscribir en ${BASE}."
  rm -f "${CONFIG}"
fi
if [ -z "${ASISTENCIA_NO_ABRIR:-}" ]; then
  echo "▸ Abriéndola. Tu número de conexión aparecerá en la ventana; dícteselo a tu técnico."
  open "${DESTINO}/${APP}"
fi
