#!/usr/bin/env bash
# args_json: {"type":"object","required":["pid"],"properties":{"pid":{"type":"string","description":"Process PID"},"signal":{"type":"string","description":"Signal name: TERM (default) or KILL"}}}
# ollie:prompt
# ## process_signal
#
# Send a signal to a detached background process.
#
# ```
# process_signal(pid="12345", signal="TERM")
# ```
# ollie:end

set -euo pipefail

source "${OLLIE_TOOLS_PATH:-$(dirname "$0")}/_lib/args.sh"

pid=$(arg_require "pid")
signal=$(arg_get "signal" "TERM")
session="${OLLIE_SESSION_ID:?OLLIE_SESSION_ID not set}"

dbus-send --session --dest=org.ollie.SessionManager --type=method_call --print-reply \
  /org/ollie/SessionManager org.ollie.SessionManager.SignalDetached \
  "string:$session" "int32:$pid" "string:$signal" 2>&1 | grep -q 'boolean true' && \
  echo "Signal $signal sent to PID $pid" || \
  { echo "Failed to signal PID $pid" >&2; exit 1; }
