strudel/strudel-launcher.sh
hacklab b6dbe97a62
Some checks are pending
Build and Deploy to warm (strudel.cc) / build (push) Waiting to run
Strudel tests / build (20) (push) Waiting to run
Distribución: lanzador de escritorio, README del fork y gitignore
- strudel-launcher.sh portable (sirve la build estática y abre el navegador;
  rutas relativas, puerto configurable, detecta node/nvm)
- README-HACKLAB.md: qué añade el fork, instalación en Linux, icono de
  escritorio, packs propios y cómo seguir a upstream
- gitignore: patterns personales, remixes generados y logs fuera del repo
2026-07-17 01:47:12 +02:00

43 lines
1.5 KiB
Bash
Executable file

#!/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-HACKLAB.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 &