#!/bin/sh
# Nugezza worker on a Synology NAS. The program updates itself in VAR/bin;
# the package's copy seeds it (and replaces an older one after an upgrade).
PKG=NugezzaWorker
VAR="/var/packages/$PKG/var"
TARGET="/var/packages/$PKG/target"
BIN="$VAR/bin/nugezza-worker"
PIDF="$VAR/supervisor.pid"
RUNF="$VAR/run"
running() { [ -f "$PIDF" ] && kill -0 "$(cat "$PIDF")" 2>/dev/null; }
case "$1" in
  start)
    running && exit 0
    mkdir -p "$VAR/bin"
    if [ ! -x "$BIN" ] || [ "$TARGET/bin/nugezza-worker" -nt "$BIN" ]; then
      cp "$TARGET/bin/nugezza-worker" "$BIN.new" && chmod 755 "$BIN.new" && mv -f "$BIN.new" "$BIN"
    fi
    touch "$RUNF"
    # A small supervisor: the worker exits to update itself and comes back.
    ( export NUGEZZA_AI_HOME="$VAR" NUGEZZA_DEVICE=synology NUGEZZA_AI_SERVICE=1
      while [ -f "$RUNF" ]; do "$BIN" run >/dev/null 2>&1; sleep 5; done ) &
    echo $! > "$PIDF"
    exit 0 ;;
  stop)
    rm -f "$RUNF"
    if running; then kill "$(cat "$PIDF")" 2>/dev/null; fi
    pkill -f "$BIN run" 2>/dev/null
    rm -f "$PIDF"
    exit 0 ;;
  status)
    running && exit 0
    exit 3 ;;
  *) exit 1 ;;
esac
