#!/usr/bin/env bash # Load nvm so npm/node resolve to the managed version export NVM_DIR="$HOME/.nvm" # shellcheck source=/dev/null [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" NEXUS_ROOT="$HOME/nexus-core" PID_DIR="$NEXUS_ROOT/runtime/pids" LOG_DIR="$NEXUS_ROOT/runtime" PYTHON="$NEXUS_ROOT/Promethean/bin/python3" FRONTEND_DIR="$NEXUS_ROOT/interface/web" mkdir -p "$PID_DIR" "$LOG_DIR" BACKEND_PID="$PID_DIR/backend.pid" MEMORY_PID="$PID_DIR/memory.pid" FRONTEND_PID="$PID_DIR/frontend.pid" BACKEND_LOG="$LOG_DIR/backend.log" MEMORY_LOG="$LOG_DIR/memory.log" FRONTEND_LOG="$LOG_DIR/frontend.log" # ----------------------------- # INTERNAL HELPERS # ----------------------------- _launch() { # _launch [args...] local name="$1" pid_file="$2" log_file="$3" work_dir="$4" shift 4 if [ -f "$pid_file" ] && kill -0 "$(cat "$pid_file")" 2>/dev/null; then echo " $name is already running (PID $(cat "$pid_file"))" return 0 fi : > "$log_file" ( cd "$work_dir" && exec "$@" ) >> "$log_file" 2>&1 & echo $! > "$pid_file" } _check() { # _check