#!/usr/bin/env bash # Kill any running Clawdis, rebuild/package, relaunch packaged app, and verify it is alive. set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" APP_BUNDLE="${ROOT_DIR}/dist/Clawdis.app" APP_PROCESS_PATTERN="Clawdis.app/Contents/MacOS/Clawdis" DEBUG_PROCESS_PATTERN="${ROOT_DIR}/apps/macos/.build-local/debug/Clawdis" RELEASE_PROCESS_PATTERN="${ROOT_DIR}/apps/macos/.build-local/release/Clawdis" log() { printf '%s\n' "$*"; } fail() { printf 'ERROR: %s\n' "$*" >&2; exit 1; } kill_all_clawdis() { for _ in {1..10}; do pkill -f "${APP_PROCESS_PATTERN}" 2>/dev/null || true pkill -f "${DEBUG_PROCESS_PATTERN}" 2>/dev/null || true pkill -f "${RELEASE_PROCESS_PATTERN}" 2>/dev/null || true pkill -x "Clawdis" 2>/dev/null || true if ! pgrep -f "${APP_PROCESS_PATTERN}" >/dev/null 2>&1 \ && ! pgrep -f "${DEBUG_PROCESS_PATTERN}" >/dev/null 2>&1 \ && ! pgrep -f "${RELEASE_PROCESS_PATTERN}" >/dev/null 2>&1 \ && ! pgrep -x "Clawdis" >/dev/null 2>&1; then return 0 fi sleep 0.25 done } log "==> Killing existing Clawdis instances" kill_all_clawdis log "==> Packaging + launching app" "${ROOT_DIR}/scripts/package-mac-app.sh" log "==> Verifying app is running" sleep 1 if pgrep -f "${APP_PROCESS_PATTERN}" >/dev/null 2>&1; then log "OK: Clawdis is running." else fail "App exited immediately. Check /tmp/clawdis.log or Console.app (User Reports)." fi