first
This commit is contained in:
Executable
+84
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================
|
||||
# start.sh — Avvia Node-RED 5.0 in locale per s2s-reasoning-engine
|
||||
#
|
||||
# Uso:
|
||||
# ./start.sh # porta default 1881
|
||||
# PORT=1900 ./start.sh # porta custom
|
||||
# LOG_LEVEL=debug ./start.sh # log più dettagliato
|
||||
# DEBUG=nodes:* ./start.sh # debug Node-RED interno
|
||||
# Stop: Ctrl+C
|
||||
# =============================================================
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PARENT_DIR="$(dirname "$ROOT_DIR")"
|
||||
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# 1) Carica env: prima locale .env (se esiste) poi padre ../.env
|
||||
# Il file locale sovrascrive il padre se c'è lo stesso var.
|
||||
# ----------------------------------------------------------
|
||||
set -a
|
||||
if [ -f "$ROOT_DIR/.env" ]; then
|
||||
echo "[env] loaded $ROOT_DIR/.env"
|
||||
# shellcheck disable=SC1091
|
||||
source "$ROOT_DIR/.env"
|
||||
fi
|
||||
if [ -f "$PARENT_DIR/.env" ]; then
|
||||
echo "[env] loaded $PARENT_DIR/.env"
|
||||
# shellcheck disable=SC1091
|
||||
source "$PARENT_DIR/.env"
|
||||
fi
|
||||
set +a
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# 2) Parametri runtime Node-RED
|
||||
# ----------------------------------------------------------
|
||||
PORT="${PORT:-${NODE_RED_PORT:-1881}}"
|
||||
export PORT
|
||||
export NODE_RED_PORT="$PORT"
|
||||
export NODE_RED_LOG_LEVEL="${LOG_LEVEL:-${NODE_RED_LOG_LEVEL:-info}}"
|
||||
export NODE_RED_CREDENTIAL_SECRET="${NODE_RED_CREDENTIAL_SECRET:-s2s-reasoning-local-dev}"
|
||||
export FLOWS="${FLOWS:-$ROOT_DIR/.node-red/flows.json}"
|
||||
|
||||
# UserDir locale (tutto dentro la cartella corrente, NO ~/.node-red)
|
||||
USERDIR="${USERDIR:-$ROOT_DIR/.node-red}"
|
||||
SETTINGS="${SETTINGS:-$USERDIR/settings.js}"
|
||||
|
||||
# Assicura che la userDir esista e i file base siano presenti.
|
||||
mkdir -p "$USERDIR"
|
||||
if [ ! -f "$SETTINGS" ] || [ "$ROOT_DIR/settings.js" -nt "$SETTINGS" ]; then
|
||||
cp -f "$ROOT_DIR/settings.js" "$SETTINGS"
|
||||
echo "[init] copied settings.js -> $SETTINGS"
|
||||
fi
|
||||
if [ ! -f "$FLOWS" ] || [ "$ROOT_DIR/flows.json" -nt "$FLOWS" ]; then
|
||||
cp -f "$ROOT_DIR/flows.json" "$FLOWS"
|
||||
echo "[init] copied flows.json -> $FLOWS"
|
||||
fi
|
||||
|
||||
# Verifica node_modules installati
|
||||
if [ ! -d "$ROOT_DIR/node_modules/node-red" ]; then
|
||||
echo "[init] node_modules non trovati. Avvio npm install..."
|
||||
npm install --no-audit --no-fund
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "╔════════════════════════════════════════════════════════════╗"
|
||||
echo "║ s2s-reasoning-engine — Node-RED v5 locale ║"
|
||||
echo "╠════════════════════════════════════════════════════════════╣"
|
||||
echo "║ Editor: http://localhost:${PORT}/ ║"
|
||||
echo "║ API: http://localhost:${PORT}/api/reasoning ║"
|
||||
echo "║ UserDir: ${USERDIR}"
|
||||
echo "║ LogLevel: ${NODE_RED_LOG_LEVEL}"
|
||||
echo "╚════════════════════════════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# 3) Avvio Node-RED
|
||||
# ----------------------------------------------------------
|
||||
exec "$ROOT_DIR/node_modules/.bin/node-red" \
|
||||
--userDir "$USERDIR" \
|
||||
--settings "$SETTINGS" \
|
||||
--port "$PORT"
|
||||
Reference in New Issue
Block a user