98 lines
3.1 KiB
Bash
Executable File
98 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ $# -eq 0 ]; then
|
|
echo "Give development team as argument, eg. '484D8S5C7M'"
|
|
exit 1
|
|
fi
|
|
|
|
RED=$'\033[1;31m'
|
|
GREEN=$'\033[1;32m'
|
|
BOLD=$'\033[1m'
|
|
NORMAL=$'\033[0m'
|
|
|
|
# The development team for signing the archive is taken as argument
|
|
DEVELOPMENT_TEAM=$1
|
|
|
|
# The configuration for the build
|
|
BUILD_CONFIGURATIONS=("Release" "MinSizeRel")
|
|
|
|
# Initial lib size in bytes
|
|
INITIAL_LIB_SIZES=(5504352 4249952)
|
|
|
|
# The path to the Xcode workspace
|
|
XCODE_WORKSPACE_PATH=platform/ios/ios.xcworkspace
|
|
|
|
# The scheme name for the build
|
|
SCHEME_NAME="iosapp"
|
|
|
|
# The archive filename
|
|
ARCHIVE_NAME="${SCHEME_NAME}.xcarchive"
|
|
|
|
if [[ ! -d $XCODE_WORKSPACE_PATH ]]; then
|
|
echo "${RED}iOS workspace not found: $XCODE_WORKSPACE_PATH${NORMAL}"
|
|
exit 2
|
|
fi
|
|
|
|
# Clean up any old builds
|
|
make clean
|
|
if [ ! $? -eq 0 ]; then
|
|
echo "${RED}Failed cleaning up the build folder${NORMAL}"
|
|
exit 3
|
|
fi
|
|
|
|
# Set up the Xcode workspace
|
|
make iproj CI=1
|
|
if [ ! $? -eq 0 ]; then
|
|
echo "${RED}Failed setting up the Xcode workspace${NORMAL}"
|
|
exit 4
|
|
fi
|
|
|
|
TOTAL_TESTS=${#BUILD_CONFIGURATIONS[@]}
|
|
PASSED_TESTS=0
|
|
FAILED_TESTS=0
|
|
|
|
for ((i=0; i<${TOTAL_TESTS}; i++)); do
|
|
BUILD_CONFIGURATION=${BUILD_CONFIGURATIONS[i]}
|
|
INITIAL_LIB_SIZE=${INITIAL_LIB_SIZES[i]}
|
|
|
|
echo -e "\n** ${BOLD}Building size test $((i+1)) on configuration: ${BUILD_CONFIGURATION}, initial size was ${INITIAL_LIB_SIZE} bytes${NORMAL} **\n"
|
|
|
|
# The output directory for the archive
|
|
OUTPUT_DIR="build/ios/archive/${BUILD_CONFIGURATION}"
|
|
|
|
# Build the app
|
|
xcodebuild archive -quiet -workspace "${XCODE_WORKSPACE_PATH}" -scheme "${SCHEME_NAME}" -configuration "${BUILD_CONFIGURATION}" -archivePath "${OUTPUT_DIR}/${ARCHIVE_NAME}" DEVELOPMENT_TEAM="${DEVELOPMENT_TEAM}"
|
|
if [ ! $? -eq 0 ]; then
|
|
echo "${RED}Failed to compile the scheme: ${SCHEME_NAME}${NORMAL}"
|
|
exit 5
|
|
fi
|
|
|
|
# The path to the maplibre dynamic lib
|
|
LIB_PATH="${OUTPUT_DIR}/${ARCHIVE_NAME}/Products/Applications/MapLibre Native.app/Frameworks/Mapbox.framework/Mapbox"
|
|
if [[ ! -f "$LIB_PATH" ]]; then
|
|
echo "${RED}MapLibre dynamic lib not found: $LIB_PATH${NORMAL}"
|
|
exit 6
|
|
fi
|
|
|
|
# Current lib size in bytes
|
|
CURRENT_LIB_SIZE=$(wc -c "${LIB_PATH}" | awk '{print $1}')
|
|
if [ -z $CURRENT_LIB_SIZE ]; then
|
|
echo "${RED}Failed to compute the size of MapLibre: ${LIB_PATH}${NORMAL}"
|
|
exit 7
|
|
fi
|
|
|
|
if (($CURRENT_LIB_SIZE > $INITIAL_LIB_SIZE)); then
|
|
FAILED_TESTS=$((FAILED_TESTS+1))
|
|
echo -e "${RED}\n[FAILED] MapLibre size is ${CURRENT_LIB_SIZE} bytes. This is larger than the initial size of ${INITIAL_LIB_SIZE} bytes.\n${NORMAL}"
|
|
else
|
|
PASSED_TESTS=$((PASSED_TESTS+1))
|
|
if (($CURRENT_LIB_SIZE == $INITIAL_LIB_SIZE)); then
|
|
echo -e "${GREEN}\n[PASSED] MapLibre size is ${CURRENT_LIB_SIZE} bytes. This is equal with the initial size of ${INITIAL_LIB_SIZE} bytes.\n${NORMAL}"
|
|
else
|
|
echo -e "${GREEN}\n[PASSED] MapLibre size is ${CURRENT_LIB_SIZE} bytes. This is smaller than the initial size of ${INITIAL_LIB_SIZE} bytes.\n${NORMAL}"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
echo -e "${GREEN}PASSED TESTS: ${PASSED_TESTS} of ${TOTAL_TESTS}${NORMAL}"
|
|
echo -e "${RED}FAILED TESTS: ${FAILED_TESTS} of ${TOTAL_TESTS}${NORMAL}" |