#!/bin/sh
set -eu
APP_DIR="${TRIM_APPDEST:?}"
ETC_DIR="${TRIM_PKGETC:?}"
VAR_DIR="${TRIM_PKGVAR:?}"
BIN="$APP_DIR/bin/pdc-fnos-agent"
PID="$VAR_DIR/agent.pid"
LOG="$VAR_DIR/agent.log"
TOKEN="$ETC_DIR/agent.token"

running() {
  [ -f "$PID" ] || return 1
  p="$(cat "$PID" 2>/dev/null || true)"
  case "$p" in *[!0-9]*|"") return 1;; esac
  kill -0 "$p" 2>/dev/null || return 1
  ps -p "$p" -o args= 2>/dev/null | grep -q '[p]dc-fnos-agent'
}

case "${1:-}" in
  start)
    if running; then exit 0; fi
    umask 077
    mkdir -p "$ETC_DIR" "$VAR_DIR" "$VAR_DIR/workspace"
    if [ ! -s "$TOKEN" ]; then
      od -An -N32 -tx1 /dev/urandom | tr -d ' \n' > "$TOKEN"
      chmod 600 "$TOKEN"
    fi
    [ -x "$BIN" ] || { echo "PDC agent binary missing" >&2; exit 1; }
    PDC_AGENT_TOKEN_FILE="$TOKEN"
    PDC_AGENT_PORT="${TRIM_SERVICE_PORT:-58621}"
    PDC_ALLOWED_ROOTS="$VAR_DIR/workspace"
    if [ -s "$ETC_DIR/allowed-roots" ]; then
      PDC_ALLOWED_ROOTS="$(tr '\n' ':' < "$ETC_DIR/allowed-roots" | sed 's/:$//')"
    fi
    PDC_DATA_DIR="$VAR_DIR"
    PDC_ENABLE_DOCKER_ACTIONS=0
    if [ -f "$ETC_DIR/docker-actions.enabled" ] && [ "$(cat "$ETC_DIR/docker-actions.enabled")" = 1 ]; then
      PDC_ENABLE_DOCKER_ACTIONS=1
    fi
    export PDC_AGENT_TOKEN_FILE PDC_AGENT_PORT PDC_ALLOWED_ROOTS PDC_DATA_DIR PDC_ENABLE_DOCKER_ACTIONS
    nohup "$BIN" >>"$LOG" 2>&1 &
    echo "$!" > "$PID"
    sleep 1
    running || { echo "PDC agent failed to start" >&2; exit 1; }
    ;;
  stop)
    if running; then kill "$(cat "$PID")"; fi
    rm -f "$PID"
    ;;
  status)
    if running; then exit 0; else exit 3; fi
    ;;
  *) echo "usage: $0 start|stop|status" >&2; exit 2;;
esac
