#!/usr/bin/env bash set -euo pipefail if ! command -v brew >/dev/null 2>&1; then echo "Error: Homebrew is required but not found in PATH" >&2 exit 1 fi if ! brew services list >/dev/null 2>&1; then echo "Error: brew services command is unavailable; install the homebrew/services tap" >&2 exit 1 fi ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" SERVER_BIN="$ROOT_DIR/bin/tracker-server" if [[ ! -x "$SERVER_BIN" ]]; then echo "Error: tracker-server binary not found at $SERVER_BIN" >&2 echo "Build it with: (cd $ROOT_DIR && ./install.sh)" >&2 exit 1 fi BREW_REPO="$(brew --repository)" TAP_PATH="$BREW_REPO/Library/Taps/agenttracker/homebrew-agent-tracker" FORMULA_DIR="$TAP_PATH/Formula" FORMULA_PATH="$FORMULA_DIR/agent-tracker-server.rb" mkdir -p "$FORMULA_DIR" TMP_DIR="$(mktemp -d)" cleanup() { rm -rf "$TMP_DIR" } trap cleanup EXIT cp "$SERVER_BIN" "$TMP_DIR/tracker-server" TARBALL="$TMP_DIR/tracker-server.tar.gz" tar -czf "$TARBALL" -C "$TMP_DIR" tracker-server SHA256="$(shasum -a 256 "$TARBALL" | awk '{print $1}')" VERSION="local-$(date +%Y%m%d%H%M%S)" cat >"$FORMULA_PATH" </dev/null 2>&1; then brew reinstall --formula "$FORMULA_PATH" >/dev/null else brew install --formula "$FORMULA_PATH" >/dev/null fi mkdir -p "$(brew --prefix)/var/agent-tracker" if brew services list | awk '{print $1}' | grep -qx "agent-tracker-server"; then brew services restart agent-tracker-server >/dev/null else brew services start agent-tracker-server >/dev/null fi SERVICE_STATE="$(brew services list | awk '$1=="agent-tracker-server" {print $2}')" if [[ "$SERVICE_STATE" != "started" ]]; then echo "Error: brew reports agent-tracker-server service in state '$SERVICE_STATE'" >&2 exit 1 fi echo "Agent tracker server managed by brew services (state: $SERVICE_STATE)." >&2