#!/bin/sh
### BEGIN INIT INFO
# Provides:          jibo-skills-logpanel
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: HTTP panel for live Jibo Skills logs
### END INIT INFO

PYTHON_BIN=${PYTHON_BIN:-/usr/bin/python}
DAEMON=${DAEMON:-/opt/jibo/Jibo/Skills/tools/robot/logpanel/jibo_logpanel.py}
PIDFILE=${PIDFILE:-/tmp/jibo-skills-logpanel.pid}
BIND=${JIBO_LOGPANEL_BIND:-0.0.0.0}
PORT=${JIBO_LOGPANEL_PORT:-15150}
LOGFILE=${JIBO_LOGD_FILE:-/tmp/jibo-skills.log}

start() {
  echo "Starting jibo-skills-logpanel"
  if [ -f "$PIDFILE" ]; then
    PID=$(cat "$PIDFILE" 2>/dev/null)
    if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
      echo "Already running (pid $PID)"
      return 0
    fi
  fi

  "$PYTHON_BIN" "$DAEMON" --bind "$BIND" --port "$PORT" --logfile "$LOGFILE" >/tmp/jibo-skills-logpanel.log 2>&1 &
  echo $! > "$PIDFILE"
  sleep 1
  if [ -f "$PIDFILE" ]; then
    echo "Started (pid $(cat "$PIDFILE" 2>/dev/null))"
    return 0
  fi
  echo "Failed to start"
  return 1
}

stop() {
  echo "Stopping jibo-skills-logpanel"
  if [ ! -f "$PIDFILE" ]; then
    echo "Not running (no pidfile)"
    return 0
  fi
  PID=$(cat "$PIDFILE" 2>/dev/null)
  if [ -z "$PID" ]; then
    rm -f "$PIDFILE"
    return 0
  fi
  kill "$PID" 2>/dev/null
  sleep 1
  kill -9 "$PID" 2>/dev/null
  rm -f "$PIDFILE"
  echo "Stopped"
  return 0
}

status() {
  if [ -f "$PIDFILE" ]; then
    PID=$(cat "$PIDFILE" 2>/dev/null)
    if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
      echo "Running (pid $PID)"
      return 0
    fi
  fi
  echo "Not running"
  return 3
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  status)
    status
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit $?
