2015-10-22 01:42:08 +00:00
|
|
|
#!/bin/bash
|
|
|
|
# Copyright (c) 2015-present, Facebook, Inc.
|
|
|
|
# All rights reserved.
|
|
|
|
#
|
|
|
|
# This source code is licensed under the BSD-style license found in the
|
|
|
|
# LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
# of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
|
|
|
|
# Bundle React Native app's code and image assets.
|
|
|
|
# This script is supposed to be invoked as part of Xcode build process
|
2016-02-01 15:42:33 +00:00
|
|
|
# and relies on environment variables (including PWD) set by Xcode
|
2015-10-22 01:42:08 +00:00
|
|
|
|
|
|
|
case "$CONFIGURATION" in
|
|
|
|
Debug)
|
2016-02-24 11:11:08 +00:00
|
|
|
# Speed up build times by skipping the creation of the offline package for debug
|
|
|
|
# builds on the simulator since the packager is supposed to be running anyways.
|
2016-04-06 16:20:39 +00:00
|
|
|
if [[ "$PLATFORM_NAME" = "iphonesimulator" ]]; then
|
|
|
|
echo "Skipping bundling for Simulator platform"
|
|
|
|
exit 0;
|
2016-02-24 11:11:08 +00:00
|
|
|
fi
|
2016-04-06 16:20:39 +00:00
|
|
|
|
2015-10-22 01:42:08 +00:00
|
|
|
DEV=true
|
|
|
|
;;
|
|
|
|
"")
|
|
|
|
echo "$0 must be invoked by Xcode"
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
*)
|
2015-12-09 12:39:36 +00:00
|
|
|
DEV=false
|
2015-10-22 01:42:08 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2016-01-25 20:35:48 +00:00
|
|
|
# Path to react-native folder inside node_modules
|
|
|
|
REACT_NATIVE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
|
2015-10-22 01:42:08 +00:00
|
|
|
# Xcode project file for React Native apps is located in ios/ subfolder
|
|
|
|
cd ..
|
|
|
|
|
2015-11-10 00:41:23 +00:00
|
|
|
# Define NVM_DIR and source the nvm.sh setup script
|
|
|
|
[ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.nvm"
|
|
|
|
|
2016-07-15 17:11:07 +00:00
|
|
|
# Define entry file
|
|
|
|
ENTRY_FILE=${1:-index.ios.js}
|
|
|
|
|
2015-11-10 00:41:23 +00:00
|
|
|
if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
|
|
|
|
. "$HOME/.nvm/nvm.sh"
|
|
|
|
elif [[ -x "$(command -v brew)" && -s "$(brew --prefix nvm)/nvm.sh" ]]; then
|
|
|
|
. "$(brew --prefix nvm)/nvm.sh"
|
|
|
|
fi
|
|
|
|
|
2015-12-17 22:09:40 +00:00
|
|
|
# Set up the nodenv node version manager if present
|
|
|
|
if [[ -x "$HOME/.nodenv/bin/nodenv" ]]; then
|
2016-07-15 17:11:07 +00:00
|
|
|
eval "$("$HOME/.nodenv/bin/nodenv" init -)"
|
2015-12-17 22:09:40 +00:00
|
|
|
fi
|
|
|
|
|
2016-01-25 20:35:48 +00:00
|
|
|
[ -z "$NODE_BINARY" ] && export NODE_BINARY="node"
|
|
|
|
|
|
|
|
nodejs_not_found()
|
|
|
|
{
|
|
|
|
echo "error: Can't find '$NODE_BINARY' binary to build React Native bundle" >&2
|
|
|
|
echo "If you have non-standard nodejs installation, select your project in Xcode," >&2
|
|
|
|
echo "find 'Build Phases' - 'Bundle React Native code and images'" >&2
|
|
|
|
echo "and change NODE_BINARY to absolute path to your node executable" >&2
|
|
|
|
echo "(you can find it by invoking 'which node' in the terminal)" >&2
|
|
|
|
exit 2
|
|
|
|
}
|
|
|
|
|
|
|
|
type $NODE_BINARY >/dev/null 2>&1 || nodejs_not_found
|
|
|
|
|
|
|
|
# Print commands before executing them (useful for troubleshooting)
|
|
|
|
set -x
|
|
|
|
DEST=$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH
|
2016-01-06 19:02:35 +00:00
|
|
|
|
2016-06-13 22:52:19 +00:00
|
|
|
if [[ "$CONFIGURATION" = "Debug" && "$PLATFORM_NAME" != "iphonesimulator" ]]; then
|
|
|
|
PLISTBUDDY='/usr/libexec/PlistBuddy'
|
|
|
|
PLIST=$TARGET_BUILD_DIR/$INFOPLIST_PATH
|
|
|
|
IP=$(ipconfig getifaddr en0)
|
2016-07-15 17:11:07 +00:00
|
|
|
$PLISTBUDDY -c "Add NSAppTransportSecurity:NSExceptionDomains:localhost:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true" "$PLIST"
|
|
|
|
$PLISTBUDDY -c "Add NSAppTransportSecurity:NSExceptionDomains:$IP.xip.io:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true" "$PLIST"
|
2016-06-13 22:52:19 +00:00
|
|
|
echo "$IP.xip.io" > "$DEST/ip.txt"
|
|
|
|
fi
|
|
|
|
|
2016-01-31 23:50:58 +00:00
|
|
|
$NODE_BINARY "$REACT_NATIVE_DIR/local-cli/cli.js" bundle \
|
2016-07-15 17:11:07 +00:00
|
|
|
--entry-file "$ENTRY_FILE" \
|
2015-10-22 01:42:08 +00:00
|
|
|
--platform ios \
|
|
|
|
--dev $DEV \
|
2016-08-03 08:03:25 +00:00
|
|
|
--reset-cache \
|
2015-10-22 01:42:08 +00:00
|
|
|
--bundle-output "$DEST/main.jsbundle" \
|
|
|
|
--assets-dest "$DEST"
|