#!/usr/bin/env bash # Install or refresh the Mac pusher's launchd agent (every 60 s). Run from any checkout: the plist points at the MAIN # checkout's tools/workers/push.mjs (/Users/joshm/Projects/igneum) unless IGNEUM_WORKERS_ROOT names another, so the agent # keeps working after this worktree is removed. # tools/workers/launchd/install.sh install and (re)load # tools/workers/launchd/install.sh --remove unload and delete set -euo pipefail HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT="${IGNEUM_WORKERS_ROOT:-/Users/joshm/Projects/igneum}" LABEL=com.igneum.workers-push; DEST="$HOME/Library/LaunchAgents/$LABEL.plist" if [ "${1:-}" = --remove ]; then launchctl bootout "gui/$(id -u)/$LABEL" 2>/dev/null || true; rm -f "$DEST"; echo "removed $LABEL"; exit 0; fi [ -f "$ROOT/tools/workers/push.mjs" ] || { echo "no $ROOT/tools/workers/push.mjs (merge workers-dash to master first, or set IGNEUM_WORKERS_ROOT)" >&2; exit 1; } mkdir -p "$HOME/Library/LaunchAgents" "$HOME/Library/Logs" sed -e "s#__ROOT__#$ROOT#g" -e "s#__HOME__#$HOME#g" "$HERE/$LABEL.plist" > "$DEST" plutil -lint "$DEST" >/dev/null launchctl bootout "gui/$(id -u)/$LABEL" 2>/dev/null || true launchctl bootstrap "gui/$(id -u)" "$DEST" launchctl kickstart -k "gui/$(id -u)/$LABEL" sleep 3; launchctl print "gui/$(id -u)/$LABEL" | grep -E 'state|last exit|runs' | head -4; tail -2 "$HOME/Library/Logs/igneum-workers-push.log" | sed 's/dl\/[A-Za-z0-9_-]\{8,\}/dl\//g'