#!/bin/bash
# ThinUPS 仪表盘生命周期脚本：start / stop / status
#
# FNOS 环境变量：TRIM_APPDEST=安装目录，TRIM_SERVICE_PORT=manifest.service_port，
# TRIM_PKGVAR=运行数据目录。
APP="$TRIM_APPDEST/server/ups_web.py"
PORT="${TRIM_SERVICE_PORT:-8787}"
VAR="${TRIM_PKGVAR:-/tmp}"
PIDFILE="$VAR/miniups-ups.pid"
LOGFILE="$VAR/miniups-ups.log"
PY=python3

case "$1" in
  start)
    if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
      exit 0
    fi
    rm -f "$TRIM_APPDEST/app.sock"
    nohup "$PY" "$APP" --port "$PORT" --socket "$TRIM_APPDEST/app.sock" >> "$LOGFILE" 2>&1 &
    echo $! > "$PIDFILE"
    exit 0
    ;;
  stop)
    if [ -f "$PIDFILE" ]; then
      kill "$(cat "$PIDFILE")" 2>/dev/null || true
      for i in {1..30}; do
        kill -0 "$(cat "$PIDFILE")" 2>/dev/null || break
        sleep 0.1
      done
      if kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
        exit 1
      fi
      rm -f "$TRIM_APPDEST/app.sock" "$PIDFILE"
    fi
    exit 0
    ;;
  status)
    if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
      exit 0
    fi
    exit 3
    ;;
  *)
    echo "usage: $0 {start|stop|status}" >&2
    exit 1
    ;;
esac
