#!/bin/sh
# El lanzador del host nativo. Existe por UNA razón medida, no por gusto:
#
# ── EL MANIFIESTO DE NATIVE MESSAGING NO PUEDE LLEVAR ARGUMENTOS ──────────────────────────────
# Comprobado dentro de nuestro propio artefacto (`omni.ja`, `modules/NativeMessaging.sys.mjs`):
#
#     let command = hostInfo.manifest.path;
#     ...
#     arguments: [hostInfo.path, context.extension.id],
#
# O sea que Gecko ejecuta EXACTAMENTE el `path` del manifiesto y los únicos argumentos que le pasa
# son la ruta del manifiesto y el id de la extensión. No hay campo para los nuestros.
#
# Y `puriy-costura` sin `--state` corre TODO EN MEMORIA: cada arranque del navegador volvería a la
# fase «aprendiendo» y ningún cambio de script sería nunca un evento. O sea que sin este lanzador la
# función existe, no falla, y no protege de nada — la peor de las tres.
#
# ── POR QUÉ LA RUTA LA DECIDE LA DISTRO Y NO EL CRATE ─────────────────────────────────────────
# Dónde vive el estado de un usuario es layout del sistema de ficheros, que es asunto de takana;
# `puriy-costura` no tiene por qué tener una opinión sobre el FHS de nadie. Se respeta
# `XDG_STATE_HOME` porque es el estándar para estado que no es caché ni configuración.
set -e
DIR="${XDG_STATE_HOME:-$HOME/.local/state}/puriy-costura"
mkdir -p "$DIR" 2>/dev/null || true
# `exec` y no una llamada: el navegador le habla al proceso por stdin/stdout, así que el host TIENE
# que heredar esos descriptores y ser el proceso que Gecko vigila. Con un `sh` de por medio, cerrar
# el puerto mataría al shell y dejaría al host huérfano hablando a una tubería rota.
exec /usr/bin/puriy-costura --state "$DIR"
