#!/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 # ── Servidor KISUM (audio → código Strudel, integrado en la pestaña KISUM) ── # Arranca el mini-servidor Python si existe su venv y no está ya escuchando. # No es crítico: si falta, Strudel abre igual (la pestaña avisará). # Busca KISUM eligiendo la primera copia que TENGA entorno (.venv): # 1) variable KISUM_DIR (si la defines tú) # 2) empaquetado en el repo (kisum/) ← tras ./install.sh # 3) ruta externa del hub MUSIKA (instalación antigua) # Si ninguna tiene venv aún, usa el empaquetado (lo tendrá tras ./install.sh). if [ -z "${KISUM_DIR:-}" ]; then for cand in "${DIR}/kisum" "${HOME}/COFRE/CODERS/MUSIKA/AUDIO/PROYECTOS/KISUM"; do if [ -x "${cand}/.venv/bin/python3" ]; then KISUM_DIR="${cand}" break fi done KISUM_DIR="${KISUM_DIR:-${DIR}/kisum}" fi KISUM_PORT="${KISUM_PORT:-3010}" KISUM_PY="${KISUM_DIR}/.venv/bin/python3" if [ -x "${KISUM_PY}" ] && ! curl -fsS -o /dev/null "http://127.0.0.1:${KISUM_PORT}/health" 2>/dev/null; then KISUM_PORT="${KISUM_PORT}" setsid "${KISUM_PY}" "${KISUM_DIR}/kisum_server.py" \ > "${DIR}/kisum-server.log" 2>&1 & fi # Abre en el navegador por defecto xdg-open "${URL}" >/dev/null 2>&1 &