73 lines
1.9 KiB
Bash
73 lines
1.9 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.
|
||
|
}
|
||
|
|
||
|
# Check if the first argument is provided
|
||
|
if [ -z "${1-}" ]; then
|
||
|
echo "Error: No simulator name provided." >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
SIMULATOR=${1}
|
||
|
|
||
|
# get our desired UUID
|
||
|
UUID=$(xcrun simctl list devices | grep -E "$SIMULATOR \(" | head -n 1 | awk -F '[()]' '{print $2}')
|
||
|
|
||
|
# get simulator status
|
||
|
SIMULATOR_STATE=$(xcrun simctl list devices | grep -E "$SIMULATOR \(" | head -n 1 | awk '{print $NF}')
|
||
|
|
||
|
# sometimes a simulator is already running, shut it down to avoid errors
|
||
|
if [ "$SIMULATOR_STATE" != "(Shutdown)" ]; then
|
||
|
xcrun simctl shutdown "$UUID"
|
||
|
fi
|
||
|
|
||
|
# boot up iOS for simulator
|
||
|
xcrun simctl boot "$UUID"
|
||
|
|
||
|
# start the simulator
|
||
|
open -a Simulator --args -CurrentDeviceUDID "$UUID"
|
||
|
|
||
|
#iOS build of debug scheme
|
||
|
xcodebuild -workspace "ios/StatusIm.xcworkspace" -configuration Debug -scheme StatusIm -destination id="$UUID" | xcbeautify
|
||
|
|
||
|
trap cleanupMetro EXIT ERR INT QUIT
|
||
|
runMetro &
|
||
|
waitForMetro
|
||
|
|
||
|
# launch the app when metro is ready
|
||
|
xcrun simctl launch "$UUID" im.status.ethereum.debug
|
||
|
|
||
|
# bring metro job to foreground
|
||
|
fg 'runMetro'
|