#!/bin/sh
# start-dev.sh — robust on QNAP/Container Station
set -e

# ===== 1) ENV defaults (ดีต่อ NFS/QNAP) =====
: "${PORT:=3001}"
: "${CHOKIDAR_USEPOLLING:=1}"
: "${CHOKIDAR_INTERVAL:=300}"
: "${WATCHPACK_POLLING:=true}"
export PORT CHOKIDAR_USEPOLLING CHOKIDAR_INTERVAL WATCHPACK_POLLING

# ===== 2) ใช้ deps ที่ bake ไว้ถ้ามี (/opt/runtime/node_modules) =====
BAKED="/opt/runtime/node_modules"
if [ -d "$BAKED" ]; then
  # พยายามชี้ /app/node_modules → /opt/runtime/node_modules (ครั้งเดียวพอ)
  if [ ! -L /app/node_modules ]; then
    if [ ! -e /app/node_modules ] || [ -z "$(ls -A /app/node_modules 2>/dev/null)" ]; then
      mkdir -p /app 2>/dev/null || true
      # สำคัญ: ชี้ที่ /app/node_modules ตรง ๆ (ไม่ใช่ node_modules/node_modules)
      ln -sfn "$BAKED" /app/node_modules 2>/dev/null || true
    fi
  fi
  # ถึงจะ symlink ไม่ได้ เราก็ยัง resolve ได้ผ่าน PATH/NODE_PATH
  export PATH="$BAKED/.bin:$PATH"
  export NODE_PATH="$BAKED${NODE_PATH:+:$NODE_PATH}"
fi

# ===== 3) ให้แน่ใจว่า /app/node_modules มีอยู่ และพยายาม set owner (best-effort) =====
mkdir -p /app/node_modules 2>/dev/null || true
chown -R "$(id -u)":"$(id -g)" /app/node_modules 2>/dev/null || true

# ===== 4) ถ้าไม่มี nodemon เลย → ติดตั้ง dev deps แบบ fallback =====
if ! command -v nodemon >/dev/null 2>&1 && [ ! -x /app/node_modules/.bin/nodemon ]; then
  echo "[start-dev] nodemon not found; installing dev deps locally..."
  npm ci || npm install
fi

# ===== 5) Start dev server (inspect เปิดไว้บน 9229) =====
echo "[start-dev] Starting dev server (inspect 0.0.0.0:9229, PORT=$PORT)"
NODEMON_BIN="$(command -v nodemon || echo npx nodemon)"
exec sh -lc "$NODEMON_BIN --legacy-watch --watch src --ext js,json,ts --exec 'node --enable-source-maps src/index.js' --inspect=0.0.0.0:9229"
