You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
3.7 KiB
150 lines
3.7 KiB
#!/bin/bash
|
|
# iOS Test App Build and Deploy Script
|
|
# Builds and deploys the DailyNotification test app to iOS Simulator
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
log_info() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_warn() {
|
|
echo -e "${YELLOW}[WARN]${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
log_step() {
|
|
echo -e "${BLUE}[STEP]${NC} $1"
|
|
}
|
|
|
|
# Check if we're in the test app directory
|
|
if [ ! -f "package.json" ] || [ ! -d "ios" ]; then
|
|
log_error "This script must be run from test-apps/daily-notification-test directory"
|
|
log_info "Usage: cd test-apps/daily-notification-test && ./scripts/build-and-deploy-ios.sh"
|
|
exit 1
|
|
fi
|
|
|
|
# Check prerequisites
|
|
log_step "Checking prerequisites..."
|
|
|
|
if ! command -v xcodebuild &> /dev/null; then
|
|
log_error "xcodebuild not found. Install Xcode command line tools:"
|
|
log_info " xcode-select --install"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v pod &> /dev/null; then
|
|
log_error "CocoaPods not found. Install with:"
|
|
log_info " gem install cocoapods"
|
|
exit 1
|
|
fi
|
|
|
|
# Get simulator device (default to iPhone 15 Pro)
|
|
SIMULATOR_DEVICE="${1:-iPhone 15 Pro}"
|
|
log_info "Using simulator: $SIMULATOR_DEVICE"
|
|
|
|
# Boot simulator
|
|
log_step "Booting simulator..."
|
|
if xcrun simctl list devices | grep -q "$SIMULATOR_DEVICE.*Booted"; then
|
|
log_info "Simulator already booted"
|
|
else
|
|
# Try to boot the device
|
|
if xcrun simctl boot "$SIMULATOR_DEVICE" 2>/dev/null; then
|
|
log_info "✓ Simulator booted"
|
|
else
|
|
log_warn "Could not boot simulator automatically"
|
|
log_info "Opening Simulator app... (you may need to select device manually)"
|
|
open -a Simulator
|
|
sleep 5
|
|
fi
|
|
fi
|
|
|
|
# Build web assets
|
|
log_step "Building web assets..."
|
|
npm run build
|
|
|
|
# Sync with iOS
|
|
log_step "Syncing with iOS project..."
|
|
if ! npx cap sync ios; then
|
|
log_error "Failed to sync with iOS project"
|
|
exit 1
|
|
fi
|
|
|
|
# Install CocoaPods dependencies
|
|
log_step "Installing CocoaPods dependencies..."
|
|
cd ios/App
|
|
if [ ! -f "Podfile.lock" ] || [ "Podfile" -nt "Podfile.lock" ]; then
|
|
pod install
|
|
else
|
|
log_info "CocoaPods dependencies up to date"
|
|
fi
|
|
|
|
# Build iOS app
|
|
log_step "Building iOS app..."
|
|
WORKSPACE="App.xcworkspace"
|
|
SCHEME="App"
|
|
CONFIG="Debug"
|
|
SDK="iphonesimulator"
|
|
|
|
xcodebuild -workspace "$WORKSPACE" \
|
|
-scheme "$SCHEME" \
|
|
-configuration "$CONFIG" \
|
|
-sdk "$SDK" \
|
|
-destination "platform=iOS Simulator,name=$SIMULATOR_DEVICE" \
|
|
-derivedDataPath build/derivedData \
|
|
CODE_SIGN_IDENTITY="" \
|
|
CODE_SIGNING_REQUIRED=NO \
|
|
CODE_SIGNING_ALLOWED=NO \
|
|
clean build
|
|
|
|
# Find built app
|
|
APP_PATH=$(find build/derivedData -name "*.app" -type d -path "*/Build/Products/*-iphonesimulator/*.app" | head -1)
|
|
|
|
if [ -z "$APP_PATH" ]; then
|
|
log_error "Could not find built app"
|
|
log_info "Searching in: build/derivedData"
|
|
exit 1
|
|
fi
|
|
|
|
log_info "Found app: $APP_PATH"
|
|
|
|
# Install app on simulator
|
|
log_step "Installing app on simulator..."
|
|
if xcrun simctl install booted "$APP_PATH"; then
|
|
log_info "✓ App installed"
|
|
else
|
|
log_error "Failed to install app"
|
|
exit 1
|
|
fi
|
|
|
|
# Get bundle identifier
|
|
BUNDLE_ID=$(plutil -extract CFBundleIdentifier raw App/Info.plist 2>/dev/null || echo "com.timesafari.dailynotification.test")
|
|
log_info "Bundle ID: $BUNDLE_ID"
|
|
|
|
# Launch app
|
|
log_step "Launching app..."
|
|
if xcrun simctl launch booted "$BUNDLE_ID"; then
|
|
log_info "✓ App launched"
|
|
else
|
|
log_warn "App may already be running"
|
|
fi
|
|
|
|
log_info ""
|
|
log_info "✅ Build and deploy complete!"
|
|
log_info ""
|
|
log_info "To view logs:"
|
|
log_info " xcrun simctl spawn booted log stream"
|
|
log_info ""
|
|
log_info "To uninstall app:"
|
|
log_info " xcrun simctl uninstall booted $BUNDLE_ID"
|
|
|
|
|