11#! /usr/bin/env bash
2+ # shellcheck disable=SC1091
23
34# PactSwiftMockService
45#
@@ -26,8 +27,11 @@ set -o pipefail
2627IPHONEOS_DEPLOYMENT_TARGET=16.0
2728MACOSX_DEPLOYMENT_TARGET=13.0
2829
29- TMP_DIR=" ../../.tmp/build-xcframework"
30+ BUILD_XCFRAMEWORK_SOURCE_DIR=" ${BASH_SOURCE[0]%/* } "
31+
32+ TMP_DIR=" ${BUILD_XCFRAMEWORK_SOURCE_DIR} /../../../.tmp/build-xcframework"
3033PRODUCT_NAME=" PactSwiftMockServer"
34+ source " ${BUILD_XCFRAMEWORK_SOURCE_DIR} /../utils.sh"
3135
3236# Only use xcbeautify if it can be found in path.
3337XCBEAUTIFY=$( command -v xcbeautify || command -v cat)
@@ -40,78 +44,70 @@ XCBEAUTIFY=$(command -v xcbeautify || command -v cat)
4044# Otherwise a _concurrency fatal issue will be raised if PactSwiftMockSerer is
4145# used in a project built with Xcode 12.x
4246
43- echo " ⚠️ Checking for the right Xcode tools..."
44- xcode-select -p && xcode-select -v
45-
46- echo " 🚨 Are you running this using Xcode 16.x tools!?"
47- select yn in " Yes" " No" ; do
48- case $yn in
49- Yes) break ;;
50- No) exit 1;;
51- esac
52- done
47+ check_xcode
5348
5449# Setup
55-
56- echo " ℹ️ Looking for ${ PRODUCT_NAME} .xcodeproj"
57- if [ ! -d " ${ PRODUCT_NAME} .xcodeproj" ] ; then
58- echo " 🚨 Run this in the same folder as \" ${PRODUCT_NAME} .xcodeproj \" . "
50+ echo " ℹ️ Looking for $PRODUCT_NAME .xcodeproj "
51+ if [ ! -d " $ PRODUCT_NAME .xcodeproj" ] ; then
52+ echo " 🚨 Run this in the same folder as \" $ PRODUCT_NAME .xcodeproj\" ! "
53+ echo " Your current location is: $( pwd ) "
5954 exit 1
6055fi
6156
62- echo " ℹ️ Removing existing XCFramework"
63- rm -fr " ./${ PRODUCT_NAME} .xcframework"
64- echo " 👍 Removed existing XCFramework"
57+ echo " ℹ️ Removing deprecated XCFramework... "
58+ rm -fr " ./$PRODUCT_NAME .xcframework"
59+ echo " 👍 Removed deprecated XCFramework"
6560
66- echo " ℹ️ Preparing ${ TMP_DIR} folder"
67- mkdir -p $TMP_DIR
68- rm -fr $TMP_DIR
61+ echo " ℹ️ Setting up $ TMP_DIR folder"
62+ rm -fr " $TMP_DIR "
63+ mkdir -p " $TMP_DIR "
6964
7065# iOS
7166
7267echo " 🏗 Building for iOS..."
7368xcodebuild archive \
74- -sdk iphoneos IPHONEOS_DEPLOYMENT_TARGET=${ IPHONEOS_DEPLOYMENT_TARGET} \
69+ -sdk iphoneos IPHONEOS_DEPLOYMENT_TARGET=$IPHONEOS_DEPLOYMENT_TARGET \
7570 -arch arm64 \
76- -scheme " ${ PRODUCT_NAME} -iphoneos" \
77- -archivePath " ${ TMP_DIR} /iphoneos/${ PRODUCT_NAME} .xcarchive" \
71+ -scheme " $PRODUCT_NAME -iphoneos" \
72+ -archivePath " $TMP_DIR /iphoneos/$PRODUCT_NAME .xcarchive" \
7873 BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
79- SKIP_INSTALL=NO | ${XCBEAUTIFY}
80-
81- echo " 👍 Framework for arm64 device built"
74+ SKIP_INSTALL=NO | $XCBEAUTIFY
75+ echo " 👍 Framework for physical arm64 device built"
8276
8377echo " 🏗 Building for iOS Simulator..."
8478xcodebuild archive \
85- -sdk iphonesimulator IPHONEOS_DEPLOYMENT_TARGET=${IPHONEOS_DEPLOYMENT_TARGET} \
86- -arch x86_64 -arch arm64 \
87- -scheme " ${PRODUCT_NAME} -iOS" \
88- -archivePath " ${TMP_DIR} /iphonesimulator/${PRODUCT_NAME} .xcarchive" \
79+ -sdk iphonesimulator IPHONEOS_DEPLOYMENT_TARGET=$IPHONEOS_DEPLOYMENT_TARGET \
80+ -arch x86_64 \
81+ -arch arm64 \
82+ -scheme " $PRODUCT_NAME -iOS" \
83+ -archivePath " $TMP_DIR /iphonesimulator/$PRODUCT_NAME .xcarchive" \
8984 BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
90- SKIP_INSTALL=NO | ${ XCBEAUTIFY}
85+ SKIP_INSTALL=NO | $XCBEAUTIFY
9186echo " 👍 Framework for iOS Simulator built for x86_64 and arm64 architecture"
9287
9388# macOS
9489
9590echo " 🏗 Building for macOS..."
9691xcodebuild archive \
97- -sdk macosx MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \
98- -arch x86_64 -arch arm64 \
99- -scheme " ${PRODUCT_NAME} -macOS" \
100- -archivePath " ${TMP_DIR} /macos/${PRODUCT_NAME} .xcarchive" \
92+ -sdk macosx MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET \
93+ -arch x86_64 \
94+ -arch arm64 \
95+ -scheme " $PRODUCT_NAME -macOS" \
96+ -archivePath " $TMP_DIR /macos/$PRODUCT_NAME .xcarchive" \
10197 BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
102- SKIP_INSTALL=NO | ${ XCBEAUTIFY}
98+ SKIP_INSTALL=NO | $XCBEAUTIFY
10399echo " 👍 Framework for macOS built for x86_64 and arm64 architectures"
104100
105101# XCFramework
106102
107103echo " 🏗 Building XCFramework..."
108104xcodebuild -create-xcframework -output ./$PRODUCT_NAME .xcframework \
109- -framework $TMP_DIR /iphoneos/$PRODUCT_NAME .xcarchive/Products/Library/Frameworks/$PRODUCT_NAME .framework \
110- -framework $TMP_DIR /iphonesimulator/$PRODUCT_NAME .xcarchive/Products/Library/Frameworks/$PRODUCT_NAME .framework \
111- -framework $TMP_DIR /macos/$PRODUCT_NAME .xcarchive/Products/Library/Frameworks/$PRODUCT_NAME .framework
105+ -framework " $TMP_DIR " /iphoneos/$PRODUCT_NAME .xcarchive/Products/Library/Frameworks/" $PRODUCT_NAME " .framework \
106+ -framework " $TMP_DIR " /iphonesimulator/$PRODUCT_NAME .xcarchive/Products/Library/Frameworks/" $PRODUCT_NAME " .framework \
107+ -framework " $TMP_DIR " /macos/$PRODUCT_NAME .xcarchive/Products/Library/Frameworks/" $PRODUCT_NAME " .framework
112108
113109# Cleanup
114110echo " ℹ️ Removing $TMP_DIR folder..."
115- rm -fr $TMP_DIR
111+ rm -fr " $TMP_DIR "
116112
117113echo " 🎉 Done!"
0 commit comments