Stabilize auth flow and profile images
This commit is contained in:
Executable
+186
@@ -0,0 +1,186 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
DEFAULT_ANDROID_ADDRESS="${TDC114_STARTUP_ANDROID_ADDRESS:-172.21.128.1:5559}"
|
||||
ADB_ADDRESS="${TDC114_ADB_CONNECT_ADDRESS:-$DEFAULT_ANDROID_ADDRESS}"
|
||||
ADB_HOST="${ADB_ADDRESS%%:*}"
|
||||
ADB_PORT="${ADB_ADDRESS##*:}"
|
||||
ADB_SOCKET="${ADB_SERVER_SOCKET:-}"
|
||||
FLUTTER_DEVICE_ID="${TDC114_FLUTTER_DEVICE_ID:-}"
|
||||
FLUTTER_DOCKER_SCRIPT="$ROOT_DIR/scripts/flutter-docker.sh"
|
||||
|
||||
print_common_header() {
|
||||
echo "[android-preflight]"
|
||||
if [ -n "$ADB_SOCKET" ]; then
|
||||
echo "Target ADB server socket: $ADB_SOCKET"
|
||||
if [ -n "$FLUTTER_DEVICE_ID" ]; then
|
||||
echo "Target Flutter device id: $FLUTTER_DEVICE_ID"
|
||||
fi
|
||||
echo "Policy default: Windows ADB server sharing via ADB_SERVER_SOCKET"
|
||||
else
|
||||
echo "Target emulator address: $ADB_ADDRESS"
|
||||
echo "Fallback direct emulator bridge: $DEFAULT_ANDROID_ADDRESS"
|
||||
fi
|
||||
echo
|
||||
}
|
||||
|
||||
print_success() {
|
||||
print_common_header
|
||||
echo "PASS Android emulator is reachable from Docker/WSL."
|
||||
echo "Next step: continue runtime startup and later run integration/manual Android checks."
|
||||
}
|
||||
|
||||
print_failure_no_address() {
|
||||
echo "[android-preflight]"
|
||||
echo "FAIL Android emulator address is empty."
|
||||
echo "Set TDC114_ADB_CONNECT_ADDRESS first, for example:"
|
||||
echo " TDC114_ADB_CONNECT_ADDRESS=$DEFAULT_ANDROID_ADDRESS ./scripts/startup.sh --auto --wait=40"
|
||||
}
|
||||
|
||||
print_failure_instructions() {
|
||||
local reason="$1"
|
||||
|
||||
print_common_header
|
||||
echo "FAIL $reason"
|
||||
echo
|
||||
echo "Local PC work required before startup continues:"
|
||||
echo "1. On Windows, open Android Studio."
|
||||
echo "2. In Device Manager, keep only one manual-test emulator running."
|
||||
echo "3. In Windows PowerShell, run adb.exe devices and confirm the emulator is in device state."
|
||||
echo "4. If it is offline or missing there too, restart the emulator first."
|
||||
if [ -n "$ADB_SOCKET" ]; then
|
||||
echo "5. If Windows adb is healthy but WSL still fails, make sure portproxy forwards 5037 -> 127.0.0.1:5037 and the firewall rule for 5037 still exists."
|
||||
else
|
||||
echo "5. If Windows adb is healthy but WSL still fails, make sure portproxy forwards $ADB_PORT -> 127.0.0.1:$ADB_PORT and the firewall rule for that port still exists."
|
||||
fi
|
||||
echo "6. After Windows-side recovery, rerun:"
|
||||
if [ -n "$ADB_SOCKET" ]; then
|
||||
echo " ADB_SERVER_SOCKET=$ADB_SOCKET ./scripts/startup.sh --auto --wait=40"
|
||||
else
|
||||
echo " TDC114_ADB_CONNECT_ADDRESS=$ADB_ADDRESS ./scripts/startup.sh --auto --wait=40"
|
||||
fi
|
||||
echo
|
||||
echo "Minimum Windows-side action I cannot do from here:"
|
||||
echo "- Start or restart the emulator GUI."
|
||||
if [ -n "$ADB_SOCKET" ]; then
|
||||
echo "- If needed, fix Windows adb/portproxy state for port 5037."
|
||||
else
|
||||
echo "- If needed, fix Windows adb/portproxy state for port $ADB_PORT."
|
||||
fi
|
||||
echo
|
||||
echo "What I can keep doing from WSL after that:"
|
||||
echo "- Recheck Docker/WSL visibility."
|
||||
echo "- Continue Baron runtime startup."
|
||||
echo "- Run API smoke and integration commands."
|
||||
}
|
||||
|
||||
if [ -z "$ADB_ADDRESS" ]; then
|
||||
print_failure_no_address
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$FLUTTER_DOCKER_SCRIPT" ]; then
|
||||
echo "Missing executable script: $FLUTTER_DOCKER_SCRIPT" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$ADB_SOCKET" ]; then
|
||||
set +e
|
||||
OUTPUT="$(ADB_SERVER_SOCKET="$ADB_SOCKET" "$FLUTTER_DOCKER_SCRIPT" adb devices 2>&1)"
|
||||
STATUS=$?
|
||||
set -e
|
||||
|
||||
if [ -n "$FLUTTER_DEVICE_ID" ]; then
|
||||
DEVICE_PATTERN="^${FLUTTER_DEVICE_ID}[[:space:]]+device$"
|
||||
OFFLINE_PATTERN="^${FLUTTER_DEVICE_ID}[[:space:]]+offline$"
|
||||
UNAUTHORIZED_PATTERN="^${FLUTTER_DEVICE_ID}[[:space:]]+unauthorized$"
|
||||
else
|
||||
DEVICE_PATTERN="^emulator-[0-9]+[[:space:]]+device$"
|
||||
OFFLINE_PATTERN="^emulator-[0-9]+[[:space:]]+offline$"
|
||||
UNAUTHORIZED_PATTERN="^emulator-[0-9]+[[:space:]]+unauthorized$"
|
||||
fi
|
||||
|
||||
if printf '%s\n' "$OUTPUT" | grep -Eq "$DEVICE_PATTERN"; then
|
||||
print_success
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if printf '%s\n' "$OUTPUT" | grep -Eq "$OFFLINE_PATTERN"; then
|
||||
print_failure_instructions "Android emulator is visible through Windows ADB server but offline."
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if printf '%s\n' "$OUTPUT" | grep -Eq "$UNAUTHORIZED_PATTERN"; then
|
||||
print_common_header
|
||||
echo "FAIL Android emulator is unauthorized through Windows ADB server."
|
||||
echo
|
||||
echo "Local PC work required before startup continues:"
|
||||
echo "1. Bring the emulator window to front."
|
||||
echo "2. Accept the RSA debugging prompt if it is visible."
|
||||
echo "3. Confirm Windows PowerShell adb.exe devices shows device."
|
||||
echo
|
||||
echo "After approval, rerun:"
|
||||
echo " ADB_SERVER_SOCKET=$ADB_SOCKET ./scripts/startup.sh --auto --wait=40"
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if printf '%s\n' "$OUTPUT" | grep -Eq "protocol fault|Connection refused|cannot connect|failed to check server version"; then
|
||||
print_failure_instructions "Docker/WSL could not use the Windows ADB server socket."
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_failure_instructions "Android emulator was not detected through the Windows ADB server socket."
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit "${STATUS:-1}"
|
||||
fi
|
||||
|
||||
set +e
|
||||
OUTPUT="$(TDC114_ADB_CONNECT_ADDRESS="$ADB_ADDRESS" "$FLUTTER_DOCKER_SCRIPT" adb-devices 2>&1)"
|
||||
STATUS=$?
|
||||
set -e
|
||||
|
||||
if printf '%s\n' "$OUTPUT" | grep -Eq "^${ADB_ADDRESS}[[:space:]]+device$"; then
|
||||
print_success
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if printf '%s\n' "$OUTPUT" | grep -Eq "^${ADB_ADDRESS}[[:space:]]+offline$"; then
|
||||
print_failure_instructions "Android emulator is visible but offline."
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if printf '%s\n' "$OUTPUT" | grep -Eq "^${ADB_ADDRESS}[[:space:]]+unauthorized$"; then
|
||||
print_common_header
|
||||
echo "FAIL Android emulator is unauthorized."
|
||||
echo
|
||||
echo "Local PC work required before startup continues:"
|
||||
echo "1. Bring the emulator window to front."
|
||||
echo "2. Accept the RSA debugging prompt if it is visible."
|
||||
echo "3. If no prompt appears, restart the emulator once and check adb.exe devices again on Windows."
|
||||
echo
|
||||
echo "After approval, rerun:"
|
||||
echo " TDC114_ADB_CONNECT_ADDRESS=$ADB_ADDRESS ./scripts/startup.sh --auto --wait=40"
|
||||
echo
|
||||
echo "What I can do after that:"
|
||||
echo "- Retry WSL/Docker device detection."
|
||||
echo "- Continue the rest of startup automatically."
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if printf '%s\n' "$OUTPUT" | grep -Eq "failed to connect to ${ADB_HOST}:${ADB_PORT}|Connection refused|cannot connect|protocol fault"; then
|
||||
print_failure_instructions "Docker/WSL could not connect to the Windows emulator bridge."
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_failure_instructions "Android emulator was not detected in a usable state."
|
||||
printf '%s\n' "$OUTPUT"
|
||||
exit "${STATUS:-1}"
|
||||
Reference in New Issue
Block a user