#!/usr/bin/env bash set -euo pipefail PROJECT_ROOT="/home/anthony/Documents/Projects/GameTime" ARTIFACT_BASE="${ARTIFACT_BASE:-$PROJECT_ROOT/.ideai/artifacts/qa-device}" PHONE_SERIAL="${PHONE_SERIAL:-}" WATCH_SERIAL="${WATCH_SERIAL:-}" PACKAGE_NAME="${PACKAGE_NAME:-com.idea.gametime}" WATCH_PACKAGE_NAME="${WATCH_PACKAGE_NAME:-com.idea.gametime}" usage() { cat <<'EOF' Usage: ./tool/qa_device_watch_companion.sh start ./tool/qa_device_watch_companion.sh stop Environment: PHONE_SERIAL Optional adb serial for the phone under test WATCH_SERIAL Optional adb serial for the Wear device under test ARTIFACT_BASE Optional artifact root PACKAGE_NAME Optional phone package name WATCH_PACKAGE_NAME Optional watch package name EOF } adb_phone() { if [[ -n "$PHONE_SERIAL" ]]; then adb -s "$PHONE_SERIAL" "$@" else adb "$@" fi } adb_watch() { [[ -n "$WATCH_SERIAL" ]] || { echo "WATCH_SERIAL is required for watch companion QA." >&2 exit 1 } adb -s "$WATCH_SERIAL" "$@" } require_adb() { command -v adb >/dev/null 2>&1 || { echo "adb not found in PATH." >&2 exit 1 } adb start-server >/dev/null adb_phone get-state >/dev/null 2>&1 || { echo "No phone adb device available." >&2 exit 1 } adb_watch get-state >/dev/null 2>&1 || { echo "No watch adb device available." >&2 exit 1 } } timestamp() { date -u +"%Y%m%dT%H%M%SZ" } start_capture() { require_adb local dir="$ARTIFACT_BASE/watch-companion-$(timestamp)" mkdir -p "$dir" adb devices -l >"$dir/adb-devices.txt" adb_phone shell getprop ro.build.fingerprint >"$dir/phone-build-fingerprint.txt" adb_watch shell getprop ro.build.fingerprint >"$dir/watch-build-fingerprint.txt" adb_phone shell dumpsys package "$PACKAGE_NAME" >"$dir/phone-package-dumpsys-before.txt" || true adb_watch shell dumpsys package "$WATCH_PACKAGE_NAME" >"$dir/watch-package-dumpsys-before.txt" || true adb_phone logcat -c adb_watch logcat -c adb_phone logcat -v threadtime >"$dir/phone-logcat.txt" 2>&1 & echo "$!" >"$dir/phone-logcat.pid" adb_watch logcat -v threadtime >"$dir/watch-logcat.txt" 2>&1 & echo "$!" >"$dir/watch-logcat.pid" cat >"$dir/steps.md" <&2 exit 2 } require_adb [[ -d "$dir" ]] || { echo "Artifact directory not found: $dir" >&2 exit 1 } [[ -f "$dir/phone-logcat.pid" ]] && kill "$(cat "$dir/phone-logcat.pid")" >/dev/null 2>&1 || true [[ -f "$dir/watch-logcat.pid" ]] && kill "$(cat "$dir/watch-logcat.pid")" >/dev/null 2>&1 || true adb_phone shell dumpsys package "$PACKAGE_NAME" >"$dir/phone-package-dumpsys-after.txt" || true adb_watch shell dumpsys package "$WATCH_PACKAGE_NAME" >"$dir/watch-package-dumpsys-after.txt" || true cat <