#!/usr/bin/env bash # Strudel launcher — sirve la build estática local y abre el navegador. # Pensado para el lanzador de escritorio (icono clicable): si el servidor ya # está corriendo solo abre la pestaña; si no, lo arranca desacoplado. # # ./strudel-launcher.sh # puerto 3009 # STRUDEL_PORT=4000 ./strudel-launcher.sh # # Requiere haber hecho antes: pnpm i && pnpm build (ver README.md) set -u DIR="$(cd "$(dirname "$0")" && pwd)" APP_DIR="${DIR}/website" ASTRO="${APP_DIR}/node_modules/.bin/astro" PORT="${STRUDEL_PORT:-3009}" URL="http://127.0.0.1:${PORT}/" LOG="${DIR}/strudel-server.log" # Si node no está en el PATH (sesión de escritorio), prueba con nvm if ! command -v node >/dev/null 2>&1 && [ -d "${HOME}/.nvm/versions/node" ]; then NODE_BIN="$(ls -d "${HOME}"/.nvm/versions/node/*/bin 2>/dev/null | sort -V | tail -1)" [ -n "${NODE_BIN}" ] && export PATH="${NODE_BIN}:${PATH}" fi if [ ! -x "${ASTRO}" ]; then echo "Falta la instalación. Ejecuta en ${DIR}:" echo " pnpm i && pnpm build" exit 1 fi # Si el servidor no está ya escuchando, lo arrancamos desacoplado del lanzador. if ! curl -fsS -o /dev/null "${URL}" 2>/dev/null; then cd "${APP_DIR}" || exit 1 setsid "${ASTRO}" preview --port "${PORT}" --host 127.0.0.1 > "${LOG}" 2>&1 & # Espera hasta ~30s a que responda for _ in $(seq 1 30); do curl -fsS -o /dev/null "${URL}" 2>/dev/null && break sleep 1 done fi # Abre en el navegador por defecto xdg-open "${URL}" >/dev/null 2>&1 &