RxSwift/scripts/common.sh

182 lines
5.8 KiB
Bash
Executable File

#!/bin/bash
set -e
#set -o xtrace
RESET="\033[0m"
BLACK="\033[30m"
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
BLUE="\033[34m"
MAGENTA="\033[35m"
CYAN="\033[36m"
WHITE="\033[37m"
BOLDBLACK="\033[1m\033[30m"
BOLDRED="\033[1m\033[31m"
BOLDGREEN="\033[1m\033[32m"
BOLDYELLOW="\033[1m\033[33m"
BOLDBLUE="\033[1m\033[34m"
BOLDMAGENTA="\033[1m\033[35m"
BOLDCYAN="\033[1m\033[36m"
BOLDWHITE="\033[1m\033[37m"
# make sure all tests are passing
DEFAULT_IOS7_SIMULATOR=RxSwiftTest-iPhone4s-iOS_7.1
DEFAULT_IOS8_SIMULATOR=RxSwiftTest-iPhone6-iOS_8.4
DEFAULT_IOS9_SIMULATOR=RxSwiftTest-iPhone6-iOS_9.0
DEFAULT_WATCHOS2_SIMULATOR=RxSwiftTest-AppleWatch-watchOS_2.0
DEFAULT_TVOS_SIMULATOR=RxSwiftTest-AppleTV-iOS_9.0
DEFAULT_IOS_SIMULATOR_RUNTIME=""
function runtime_available() {
if [ `xcrun simctl list runtimes | grep "${1}" | wc -l` -eq 1 ]; then
return 0
else
return 1
fi
}
# used to check simulator name
function contains() {
string="$1"
substring="$2"
if test "${string#*$substring}" != "$string"
then
return 0 # $substring is in $string
else
return 1 # $substring is not in $string
fi
}
function simulator_available() {
SIMULATOR=$1
if [ `xcrun simctl list | grep "${SIMULATOR}" | wc -l` -eq 0 ]; then
return -1
elif [ `xcrun simctl list | grep "${SIMULATOR}" | wc -l` -gt 1 ]; then
echo "Multiple simulators ${SIMULATOR} found"
xcrun simctl list | \
grep "${SIMULATOR}" | \
cut -d "(" -f 2 | \
cut -d ")" -f 1 | \
xargs xcrun simctl delete;
exit -1
return -1
elif [ `xcrun simctl list | grep "${SIMULATOR}" | grep "unavailable" | wc -l` -eq 1 ]; then
# delete unavailable simulator
xcrun simctl list |
grep "${SIMULATOR}" |
grep "unavailable" |
cut -d "(" -f 2 |
cut -d ")" -f 1 |
xargs xcrun simctl delete
return -1
else
return 0
fi
}
if [ "${IS_LOCAL}" == "1" ]; then
IOS7_SIMULATORS="RxSwiftTest-iPhone4s-iOS_7.1 RxSwiftTest-iPhone5-iOS_7.1 RxSwiftTest-iPhone5s-iOS_7.1"
IOS8_SIMULATORS="RxSwiftTest-iPhone4s-iOS_8.4 RxSwiftTest-iPhone5-iOS_8.4 RxSwiftTest-iPhone5s-iOS_8.4 RxSwiftTest-iPhone6-iOS_8.4 RxSwiftTest-iPhone6Plus-iOS_8.4"
else
IOS7_SIMULATORS="RxSwiftTest-iPhone4s-iOS_7.1"
IOS8_SIMULATORS="RxSwiftTest-iPhone4s-iOS_8.4"
fi
if runtime_available "com.apple.CoreSimulator.SimRuntime.iOS-9-1"; then
DEFAULT_IOS9_SIMULATOR="RxSwiftTest-iPhone6-iOS_9.1"
DEFAULT_IOS_SIMULATOR_RUNTIME='com.apple.CoreSimulator.SimRuntime.iOS-9-1'
else
DEFAULT_IOS9_SIMULATOR="RxSwiftTest-iPhone6-iOS_9.0"
DEFAULT_IOS_SIMULATOR_RUNTIME='com.apple.CoreSimulator.SimRuntime.iOS-9-0'
fi
BUILD_DIRECTORY=build
function rx() {
SCHEME=$1
CONFIGURATION=$2
SIMULATOR=$3
ACTION=$4
echo
printf "${GREEN}${ACTION} ${BOLDCYAN}$SCHEME - $CONFIGURATION ($SIMULATOR)${RESET}\n"
echo
DESTINATION=""
if [ "$SIMULATOR" != "" ]; then
OS=`echo $SIMULATOR | cut -d'_' -f 2`
if contains $SIMULATOR "watchOS"; then
DESTINATION='platform=watchOS Simulator,OS='$OS',name='$SIMULATOR''
elif contains $SIMULATOR "AppleTV"; then
DESTINATION='platform=tvOS Simulator,OS='$OS',name='$SIMULATOR''
else
DESTINATION='platform=iOS Simulator,OS='$OS',name='$SIMULATOR''
fi
else
DESTINATION='platform=OS X,arch=x86_64'
fi
STATUS=""
xcodebuild -workspace Rx.xcworkspace \
-scheme $SCHEME \
-configuration $CONFIGURATION \
-derivedDataPath "${BUILD_DIRECTORY}" \
-destination "$DESTINATION" \
$ACTION | xcpretty -c; STATUS=${PIPESTATUS[0]}
if [ $STATUS -ne 0 ]; then
echo $STATUS
exit $STATUS
fi
}
# simulators
# xcrun simctl list devicetypes
# xcrun simctl list runtimes
function createDevices() {
xcrun simctl create RxSwiftTest-iPhone4s-iOS_7.1 'iPhone 4s' 'com.apple.CoreSimulator.SimRuntime.iOS-7-1'
xcrun simctl create RxSwiftTest-iPhone5-iOS_7.1 'iPhone 5' 'com.apple.CoreSimulator.SimRuntime.iOS-7-1'
xcrun simctl create RxSwiftTest-iPhone5s-iOS_7.1 'iPhone 5s' 'com.apple.CoreSimulator.SimRuntime.iOS-7-1'
xcrun simctl create RxSwiftTest-iPhone4s-iOS_8.4 'iPhone 4s' 'com.apple.CoreSimulator.SimRuntime.iOS-8-4'
xcrun simctl create RxSwiftTest-iPhone5-iOS_8.4 'iPhone 5' 'com.apple.CoreSimulator.SimRuntime.iOS-8-4'
xcrun simctl create RxSwiftTest-iPhone5s-iOS_8.4 'iPhone 5s' 'com.apple.CoreSimulator.SimRuntime.iOS-8-4'
xcrun simctl create RxSwiftTest-iPhone6-iOS_8.4 'iPhone 6' 'com.apple.CoreSimulator.SimRuntime.iOS-8-4'
xcrun simctl create RxSwiftTest-iPhone6Plus-iOS_8.4 'iPhone 6 Plus' 'com.apple.CoreSimulator.SimRuntime.iOS-8-4'
xcrun simctl create RxSwiftTest-iPhone4s-iOS_9.0 'iPhone 4s' 'com.apple.CoreSimulator.SimRuntime.iOS-9-0'
xcrun simctl create RxSwiftTest-iPhone5-iOS_9.0 'iPhone 5' 'com.apple.CoreSimulator.SimRuntime.iOS-9-0'
xcrun simctl create RxSwiftTest-iPhone5s-iOS_9.0 'iPhone 5s' 'com.apple.CoreSimulator.SimRuntime.iOS-9-0'
xcrun simctl create RxSwiftTest-iPhone6-iOS_9.0 'iPhone 6' 'com.apple.CoreSimulator.SimRuntime.iOS-9-0'
xcrun simctl create RxSwiftTest-iPhone6Plus-iOS_9.0 'iPhone 6 Plus' 'com.apple.CoreSimulator.SimRuntime.iOS-9-0'
}
function deleteDevices() {
xcrun simctl delete RxSwiftTest-iPhone4s-iOS_7.1 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone5-iOS_7.1 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone5s-iOS_7.1 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone4s-iOS_8.4 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone5-iOS_8.4 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone5s-iOS_8.4 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone6-iOS_8.4 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone6Plus-iOS_8.4 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone4s-iOS_9.0 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone5-iOS_9.0 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone5s-iOS_9.0 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone6-iOS_9.0 || echo "failed"
xcrun simctl delete RxSwiftTest-iPhone6Plus-iOS_9.0 || echo "failed"
}