Files

64 lines
2.5 KiB
Bash

#!/usr/bin/env bash
# Unpack, launch the Tauri macOS shell, and wait for the backend to be ready.
# Outputs BASE_URL to $GITHUB_ENV for subsequent steps.
set -euo pipefail
# 1. Unpack the freshly built Tauri zip.
echo "[launch_tauri_macos] Unpacking zip..."
mkdir -p dist/verify-tauri
unzip -q dist/QwenPaw-Tauri-*-macOS.zip -d dist/verify-tauri
APP="$(find dist/verify-tauri -maxdepth 3 -name '*.app' -type d | head -1)"
if [ -z "$APP" ]; then
echo "::error::Tauri .app not found inside zip"
exit 1
fi
echo "[launch_tauri_macos] Found app: $APP"
# 2. Remove macOS quarantine (CI download marks it).
xattr -dr com.apple.quarantine "$APP" 2>/dev/null || true
# 3. Launch the full Tauri shell (matches real user double-click).
echo "[launch_tauri_macos] Launching Tauri shell..."
open "$APP"
echo "[launch_tauri_macos] open exit=$?"
sleep 3
echo "[launch_tauri_macos] Process snapshot after launch:"
ps -ef | grep -iE "qwenpaw|tauri" | grep -v grep || echo " (no matching processes)"
# 4. Wait for the sidecar to write the port file and respond.
# The sidecar writes desktop_port at WORKING_DIR root (~/.qwenpaw),
# not inside the workspace dir.
PORT_FILE="$HOME/.qwenpaw/desktop_port"
PORT=""
for i in $(seq 1 60); do
if [ -f "$PORT_FILE" ]; then
PORT="$(cat "$PORT_FILE" | tr -d '[:space:]')"
if [ -n "$PORT" ] && curl -sf "http://127.0.0.1:$PORT/api/version" >/dev/null; then
echo "[launch_tauri_macos] Tauri app ready on port $PORT after ~$((i*2))s"
break
fi
fi
if [ "$i" = "60" ]; then
echo "::error::Tauri app did not start within 120s"
echo "[debug] PORT_FILE=$PORT_FILE exists=$([ -f "$PORT_FILE" ] && echo yes || echo no)"
echo "[debug] WORKING_DIR (~/.qwenpaw) contents:"
ls -la "$HOME/.qwenpaw/" 2>/dev/null || echo " (missing)"
echo "[debug] All qwenpaw-related files under HOME (top 30):"
find "$HOME/.qwenpaw" -maxdepth 4 -type f 2>/dev/null | head -30 || true
echo "[debug] desktop.log tail (if exists):"
tail -50 "$HOME/.qwenpaw/desktop.log" 2>/dev/null || echo " (no desktop.log)"
echo "[debug] Process list:"
ps -ef | grep -iE "qwenpaw|tauri" | grep -v grep || echo " (no matching processes)"
exit 1
fi
sleep 2
done
# 5. Auto-init creates BOOTSTRAP.md during startup. Remove it afterwards so
# the verifier can drive the agent in normal QA mode.
rm -f "$HOME/.qwenpaw/workspaces/default/BOOTSTRAP.md"
export BASE_URL="http://127.0.0.1:$PORT"
echo "BASE_URL=$BASE_URL" >> "$GITHUB_ENV"
echo "$BASE_URL"