Rollback-Punkt vor Expo SDK 54 / RN 0.81 Upgrade. UI/UX: - Profile: ProfileHeader redesign (sign-in chip + member-since), StatsBar 3 pill cards, Demographics accordion completed (Geburtsjahr, Geschlecht, Familienstand, Beruf-split, Wohnort), Pro-Trial-Banner, Approved-Domains list, DigaMissionBanner - Settings: section-based layout, neutral icons (matched Header dropdown style) - Header dropdown: extended with logout + games-page link - Notifications page: skeleton dummy data - Locales: i18n keys for new screens New components: - WheelPickerModal: native iOS UIPickerView wheel for long lists (Geburtsjahr 91 items, Bundesland 16, Stadt 30+/Bundesland) - OptionsBottomSheet: iOS-style options sheet (used briefly for Geschlecht, currently unused — kept for potential future use) - germanCities.ts: Top-cities per Bundesland (DSGVO-clean static data) New libs (NewArch-codegen verified): - @react-native-menu/menu 2.0.0 (UIMenu wrapper, Apple HIG-konform) - @lodev09/react-native-true-sheet 3.10.1 (UISheetPresentationController wrapper — ABER incompatible mit RN 0.79.6, Build-Error → Trigger für SDK-54-Upgrade) Maestro E2E: - Initial setup mit auth/community/profile/urge flows Scripts: - build-ios-clean.sh: Xcode DerivedData + ios/build cleanup vor expo run:ios Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
79 lines
2.4 KiB
Bash
Executable File
79 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# build-ios-clean.sh — iOS clean rebuild ohne Festplatten-bloat
|
|
#
|
|
# Cleart vor jedem Build:
|
|
# - Rebreak DerivedData (NICHT alle Projects, nur Rebreak-*)
|
|
# - ios/build/ (Xcode workspace build output)
|
|
#
|
|
# Optional via env:
|
|
# CLEAN_PODS=1 → auch ios/Pods nukern + pod install (langsamer, ~3min extra)
|
|
# SKIP_BUILD=1 → nur cleanup, kein expo run:ios
|
|
#
|
|
# Usage:
|
|
# ./scripts/build-ios-clean.sh # cleanup + simulator-build
|
|
# ./scripts/build-ios-clean.sh --device # cleanup + device-build
|
|
# CLEAN_PODS=1 ./scripts/build-ios-clean.sh # full reset
|
|
# SKIP_BUILD=1 ./scripts/build-ios-clean.sh # nur disk freigeben
|
|
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")/.."
|
|
|
|
echo "==================================="
|
|
echo " iOS Clean-Build"
|
|
echo "==================================="
|
|
|
|
free_before=$(df -h / | tail -1 | awk '{print $4}')
|
|
echo "Free disk (before): $free_before"
|
|
echo ""
|
|
|
|
# 1. Sicherheits-check: läuft gerade ein Xcode/expo-build?
|
|
if pgrep -f "xcodebuild|expo run:ios" >/dev/null 2>&1; then
|
|
echo "WARNUNG: xcodebuild oder expo run:ios läuft gerade."
|
|
echo " Cleanup würde laufenden Build kaputt machen. Abbruch."
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Rebreak DerivedData nukern (gezielt, nicht alle Projects)
|
|
DD_DIR="$HOME/Library/Developer/Xcode/DerivedData"
|
|
REBREAK_DDS=$(find "$DD_DIR" -maxdepth 1 -name "Rebreak-*" -type d 2>/dev/null || true)
|
|
if [ -n "$REBREAK_DDS" ]; then
|
|
echo "==> Removing Rebreak DerivedData:"
|
|
echo "$REBREAK_DDS" | sed 's/^/ /'
|
|
echo "$REBREAK_DDS" | xargs rm -rf
|
|
else
|
|
echo "==> No Rebreak DerivedData found (already clean)"
|
|
fi
|
|
|
|
# 3. ios/build/ (workspace build output, falls vorhanden)
|
|
if [ -d "ios/build" ]; then
|
|
size=$(du -sh ios/build 2>/dev/null | awk '{print $1}')
|
|
echo "==> Removing ios/build/ ($size)"
|
|
rm -rf ios/build
|
|
fi
|
|
|
|
# 4. Optional: Pods komplett zurücksetzen
|
|
if [ "${CLEAN_PODS:-0}" = "1" ]; then
|
|
if [ -d "ios/Pods" ]; then
|
|
size=$(du -sh ios/Pods 2>/dev/null | awk '{print $1}')
|
|
echo "==> CLEAN_PODS=1 → Removing ios/Pods/ ($size)"
|
|
rm -rf ios/Pods ios/Podfile.lock
|
|
fi
|
|
echo "==> Running pod install"
|
|
(cd ios && pod install)
|
|
fi
|
|
|
|
free_after=$(df -h / | tail -1 | awk '{print $4}')
|
|
echo ""
|
|
echo "Free disk (after): $free_after"
|
|
echo ""
|
|
|
|
# 5. Build (außer SKIP_BUILD=1)
|
|
if [ "${SKIP_BUILD:-0}" = "1" ]; then
|
|
echo "SKIP_BUILD=1 → cleanup-only, kein expo run:ios"
|
|
exit 0
|
|
fi
|
|
|
|
echo "==> Starting expo run:ios $*"
|
|
exec npx expo run:ios "$@"
|