#!/usr/bin/env bash set -euo pipefail PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" VENV_PYTHON="$PROJECT_DIR/.venv/bin/python" PID_FILE="$PROJECT_DIR/runtime/service.pid" LOG_FILE="$PROJECT_DIR/logs/service.log" if [[ ! -x "$VENV_PYTHON" ]]; then echo "Python environment missing. Run ./scripts/setup.sh first." >&2 exit 1 fi if [[ -f "$PID_FILE" ]]; then EXISTING_PID="$(tr -dc '0-9' < "$PID_FILE")" if [[ -n "$EXISTING_PID" ]] && kill -0 "$EXISTING_PID" 2>/dev/null; then echo "Service already running (PID $EXISTING_PID)." exit 0 fi fi mkdir -p "$PROJECT_DIR/runtime" "$PROJECT_DIR/logs" cd "$PROJECT_DIR" "$VENV_PYTHON" -m data_query_agent --check-config nohup "$VENV_PYTHON" -m data_query_agent >>"$LOG_FILE" 2>&1 & SERVICE_PID=$! printf '%s\n' "$SERVICE_PID" > "$PID_FILE" sleep 1 if ! kill -0 "$SERVICE_PID" 2>/dev/null; then echo "Service failed to start. Check $LOG_FILE" >&2 exit 1 fi echo "Service started (PID $SERVICE_PID). Log: $LOG_FILE"