Skip to content

Commit 1fb7a25

Browse files
Harry Tormeyfacebook-github-bot
Harry Tormey
authored andcommitted
Add iOS Validate Environment Script (#19750)
Summary: Fixes #19694 this diff adds an iOS environment validation script as requested by hramos. A similar script for Android exists: scripts/validate-android-test-env.sh. This script: - Validates that the minimum required Xcode version is installed (people using Xcode 8 with a recent release may encounter cryptic build errors). - Validates the correct Node version is installed (Node 10 is not fully supported at the time, Node 6 is no longer supported). <!-- Required: Write your motivation here. If this PR fixes an issue, type "Fixes #issueNumber" to automatically close the issue when the PR is merged. --> Run ./scripts/validate-ios-test-env.sh on a properly setup OSX machine and verify it works, change the version comparison and make sure it fails. <!-- Required: Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots and videos! --> <!-- Does this PR require a documentation change? Create a PR at https://github.com/facebook/react-native-website and add a link to it here. --> <!-- Required. Help reviewers and the release process by writing your own release notes. See below for an example. --> [INTERNAL] [ENHANCEMENT] [scripts] - Add iOS validate environment script <!-- **INTERNAL and MINOR tagged notes will not be included in the next version's final release notes.** CATEGORY [----------] TYPE [ CLI ] [-------------] LOCATION [ DOCS ] [ BREAKING ] [-------------] [ GENERAL ] [ BUGFIX ] [ {Component} ] [ INTERNAL ] [ ENHANCEMENT ] [ {Filename} ] [ IOS ] [ FEATURE ] [ {Directory} ] |-----------| [ ANDROID ] [ MINOR ] [ {Framework} ] - | {Message} | [----------] [-------------] [-------------] |-----------| EXAMPLES: [IOS] [BREAKING] [FlatList] - Change a thing that breaks other things [ANDROID] [BUGFIX] [TextInput] - Did a thing to TextInput [CLI] [FEATURE] [local-cli/info/info.js] - CLI easier to do things with [DOCS] [BUGFIX] [GettingStarted.md] - Accidentally a thing/word [GENERAL] [ENHANCEMENT] [Yoga] - Added new yoga thing/position [INTERNAL] [FEATURE] [./scripts] - Added thing to script that nobody will see --> Pull Request resolved: #19750 Differential Revision: D9005151 Pulled By: hramos fbshipit-source-id: a69ef2a6e513e580089c791fd44a0e70c2a3f240
1 parent 0bfbf30 commit 1fb7a25

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

scripts/validate-ios-test-env.sh

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/bin/bash
2+
3+
# This script validates that iOS is set up correctly for the
4+
# testing environment.
5+
#
6+
# In particular, it checks that the minimum required Xcode version is installed.
7+
# It also checks that the correct Node version is installed. Node 10 is not fully
8+
# supported at the time and Node 6 is no longer supported.
9+
10+
# Function used to compare dot seperated version numbers
11+
function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; }
12+
13+
# Check that node is installed.
14+
if [ -z "$(which node)" ]; then
15+
echo "Could not find Node binary. Please check your nodejs install."
16+
echo "See http://facebook.github.io/react-native/docs/getting-started.html for instructions."
17+
exit 1
18+
fi
19+
20+
# Check that the correct version of node is installed
21+
NODE_VERSION="$(command node --version | sed 's/[-/a-zA-Z]//g' |sed 's/.\{2\}$//')"
22+
23+
if (( $(echo "${NODE_VERSION} <= 6.0" | bc -l) )); then
24+
echo "Node ${NODE_VERSION} detected. This version of Node is not supported."
25+
echo "Note: Node 10 is not fully supported at the time and Node 6 is no longer supported."
26+
echo "See https://nodejs.org/en/download/ for instructions."
27+
exit 1
28+
fi
29+
30+
if (( $(echo "${NODE_VERSION} == 10.0" | bc -l) )); then
31+
echo "Node ${NODE_VERSION} detected. This version of Node is not fully supported at this time."
32+
echo "See https://github.com/facebook/react-native/issues/19229 for more information."
33+
exit 1
34+
fi
35+
36+
# Check that Xcode is installed.
37+
if [ -z "$(which xcodebuild)" ]; then
38+
echo "Could not find Xcode build tools. Please check your Xcode install."
39+
echo "See http://facebook.github.io/react-native/docs/getting-started.html for instructions."
40+
exit 1
41+
fi
42+
43+
MIN_XCODE_VERSION=9.4
44+
# Check that the correct version of Xcode is installed
45+
XCODE_VERSION="$(command xcodebuild -version | sed '$ d' | sed 's/[-/a-zA-Z]//g')"
46+
if (version_gt $MIN_XCODE_VERSION $XCODE_VERSION) && [ "$XCODE_VERSION" != "$MIN_XCODE_VERSION" ]; then
47+
echo "Xcode ${XCODE_VERSION} detected. React Native requires ${MIN_XCODE_VERSION} or newer."
48+
echo "Older versions of Xcode may cause cryptic build errors."
49+
echo "See http://facebook.github.io/react-native/docs/getting-started.html for instructions."
50+
exit 1
51+
fi

0 commit comments

Comments
 (0)