54 lines
1.3 KiB
Bash
54 lines
1.3 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
set -euo pipefail
|
||
|
set -m # needed to access jobs
|
||
|
|
||
|
GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
|
||
|
|
||
|
# We run Metro in background while calling adb.
|
||
|
cleanupMetro() {
|
||
|
pkill -f run-metro.sh
|
||
|
rm -f metro-server-logs.log
|
||
|
}
|
||
|
|
||
|
# Using function gives a neater jobspec name.
|
||
|
runMetro() {
|
||
|
nohup "${GIT_ROOT}/scripts/run-metro.sh" 2>&1 \
|
||
|
| tee metro-server-logs.log
|
||
|
}
|
||
|
|
||
|
waitForMetro() {
|
||
|
set +e # Allow grep command to fail in the loop.
|
||
|
TIMEOUT=5
|
||
|
echo "Waiting for Metro server..." >&2
|
||
|
while ! grep -q "Welcome to Metro" metro-server-logs.log; do
|
||
|
echo -n "." >&2
|
||
|
sleep 1
|
||
|
if ((TIMEOUT == 0)); then
|
||
|
echo -e "\nMetro server timed out, exiting" >&2
|
||
|
set -e # Restore errexit for rest of script.
|
||
|
return 1
|
||
|
fi
|
||
|
((TIMEOUT--))
|
||
|
done
|
||
|
set -e # Restore errexit for rest of script.
|
||
|
}
|
||
|
|
||
|
# Generate android debug build.
|
||
|
export ANDROID_ABI_INCLUDE=$("${GIT_ROOT}/scripts/adb_devices_abis.sh")
|
||
|
export BUILD_ENV=debug
|
||
|
export BUILD_TYPE=debug
|
||
|
"${GIT_ROOT}/scripts/build-android.sh"
|
||
|
|
||
|
# Install the APK on running emulator or android device.
|
||
|
adb install ./result/app-debug.apk
|
||
|
|
||
|
trap cleanupMetro EXIT ERR INT QUIT
|
||
|
runMetro &
|
||
|
waitForMetro
|
||
|
|
||
|
# Start the installed app.
|
||
|
adb shell monkey -p im.status.ethereum.debug 1
|
||
|
|
||
|
# bring metro job to foreground
|
||
|
fg 'runMetro'
|