diff --git a/.gitignore b/.gitignore index d0f80477e95..666e8447424 100644 --- a/.gitignore +++ b/.gitignore @@ -200,3 +200,6 @@ metro-server-logs.log ## debug build time logs logs/ + +## available iOS simulators +ios_simulators_list.json diff --git a/scripts/run-ios.sh b/scripts/run-ios.sh index d3a530bfe02..affcbd2d09f 100755 --- a/scripts/run-ios.sh +++ b/scripts/run-ios.sh @@ -8,9 +8,9 @@ XCRUN_LAUNCH_LOG_FILE="${GIT_ROOT}/logs/xcrun_launch.log" # Install on the simulator installAndLaunchApp() { - xcrun simctl install "$UUID" "$APP_PATH" > "${XCRUN_INSTALL_LOG_FILE}" 2>&1 + xcrun simctl install "$UDID" "$APP_PATH" > "${XCRUN_INSTALL_LOG_FILE}" 2>&1 "${GIT_ROOT}/scripts/wait-for-metro-port.sh" 2>&1 - xcrun simctl launch "$UUID" im.status.ethereum.debug > "${XCRUN_LAUNCH_LOG_FILE}" 2>&1 + xcrun simctl launch "$UDID" im.status.ethereum.debug > "${XCRUN_LAUNCH_LOG_FILE}" 2>&1 } @@ -25,29 +25,41 @@ if [ -z "${1-}" ]; then exit 1 fi +# fetch available iOS Simulators +xcrun simctl list devices -j > ios_simulators_list.json + SIMULATOR=${1} -# get our desired UUID -UUID=$(xcrun simctl list devices | grep -E "$SIMULATOR \(" | head -n 1 | awk -F '[()]' '{print $2}') +# get the first available UDID for Simulators that match the name +read -r UDID SIMULATOR_STATE IS_AVAILABLE < <(jq --raw-output --arg simulator "${SIMULATOR}" ' + [ .devices[] | .[] | select(.name == $simulator) ] | + map(select(.isAvailable)) + map(select(.isAvailable | not)) | + first | + "\(.udid) \(.state) \(.isAvailable)" +' ios_simulators_list.json) -# get simulator status -SIMULATOR_STATE=$(xcrun simctl list devices | grep -E "$SIMULATOR \(" | head -n 1 | awk '{print $NF}') +if [ "${IS_AVAILABLE}" == false ] || [ "${UDID}" == null ]; then + echo "Error: Simulator ${SIMULATOR} is not available, Please find and install them." + echo "For help please refer" + echo "https://developer.apple.com/documentation/safari-developer-tools/adding-additional-simulators#Add-and-remove-Simulators " >&2 + exit 1 +fi # sometimes a simulator is already running, shut it down to avoid errors -if [ "$SIMULATOR_STATE" != "(Shutdown)" ]; then - xcrun simctl shutdown "$UUID" +if [ "${SIMULATOR_STATE}" != "Shutdown" ]; then + xcrun simctl shutdown "${UDID}" fi # boot up iOS for simulator -xcrun simctl boot "$UUID" +xcrun simctl boot "${UDID}" # start the simulator -open -a Simulator --args -CurrentDeviceUDID "$UUID" +open -a Simulator --args -CurrentDeviceUDID "${UDID}" BUILD_DIR="${GIT_ROOT}/build" #iOS build of debug scheme -xcodebuild -workspace "ios/StatusIm.xcworkspace" -configuration Debug -scheme StatusIm -destination id="$UUID" -derivedDataPath "${BUILD_DIR}" | xcbeautify +xcodebuild -workspace "ios/StatusIm.xcworkspace" -configuration Debug -scheme StatusIm -destination id="${UDID}" -derivedDataPath "${BUILD_DIR}" -verbose | xcbeautify APP_PATH="${BUILD_DIR}/Build/Products/Debug-iphonesimulator/StatusIm.app"