#!/bin/bash # quiXzoom Build Verification Script # Verifies that all required files exist for TestFlight build set -e echo "🔍 quiXzoom Build Verification" echo "================================" echo "" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color ERRORS=0 WARNINGS=0 check_file() { if [ -f "$1" ]; then echo -e "${GREEN}✅${NC} $1" return 0 else echo -e "${RED}❌${NC} $1 (MISSING)" ERRORS=$((ERRORS + 1)) return 1 fi } check_dir() { if [ -d "$1" ]; then echo -e "${GREEN}✅${NC} $1/" return 0 else echo -e "${RED}❌${NC} $1/ (MISSING)" ERRORS=$((ERRORS + 1)) return 1 fi } echo "📦 Core Files" echo "-------------" check_file "package.json" check_file "app.json" check_file "index.js" check_file "App.js" echo "" echo "📱 iOS Project" echo "--------------" check_dir "ios" check_file "ios/Podfile" check_file "ios/quixzoom.xcodeproj/project.pbxproj" check_file "ios/quixzoom/AppDelegate.h" check_file "ios/quixzoom/AppDelegate.mm" check_file "ios/quixzoom/main.m" check_file "ios/quixzoom/Info.plist" check_file "ios/quixzoom/LaunchScreen.storyboard" check_file "ios/quixzoom/quixzoom.entitlements" check_file "ios/quixzoom/Images.xcassets/Contents.json" check_file "ios/quixzoom/Images.xcassets/AppIcon.appiconset/Contents.json" check_file "ios/ExportOptions.plist" echo "" echo "🤖 Android Project" echo "------------------" check_dir "android" check_file "android/build.gradle" check_file "android/app/build.gradle" check_file "android/app/src/main/AndroidManifest.xml" echo "" echo "📂 Source Files" echo "---------------" check_dir "src" check_dir "src/api" check_dir "src/components" check_dir "src/hooks" check_dir "src/navigation" check_dir "src/screens" check_dir "src/store" check_dir "src/utils" check_file "src/api/client.js" check_file "src/components/CameraView.js" check_file "src/components/EvidencePanel.js" check_file "src/components/MissionCard.js" check_file "src/components/StatsView.js" check_file "src/hooks/useCamera.js" check_file "src/hooks/useLocation.js" check_file "src/hooks/useMissions.js" check_file "src/navigation/AppNavigator.js" check_file "src/screens/HomeScreen.js" check_file "src/screens/StatsScreen.js" check_file "src/screens/ProfileScreen.js" check_file "src/store/store.js" check_file "src/utils/permissions.js" check_file "src/utils/offlineManager.js" echo "" echo "📋 Configuration Validation" echo "---------------------------" # Check bundle identifier if grep -q "com.quixzoom.app" ios/quixzoom/Info.plist; then echo -e "${GREEN}✅${NC} Bundle identifier: com.quixzoom.app" else echo -e "${YELLOW}⚠️${NC} Bundle identifier not found" WARNINGS=$((WARNINGS + 1)) fi # Check version VERSION=$(grep "CFBundleShortVersionString" ios/quixzoom/Info.plist | head -1 | sed 's/.*\(.*\)<\/string>.*/\1/') echo -e "${GREEN}✅${NC} App version: $VERSION" # Check minimum iOS version MIN_IOS=$(grep "IPHONEOS_DEPLOYMENT_TARGET" ios/quixzoom.xcodeproj/project.pbxproj | head -1 | sed 's/.*= \(.*\);.*/\1/' | tr -d ' ') echo -e "${GREEN}✅${NC} Minimum iOS version: $MIN_IOS" # Check required device capabilities if grep -q "gps" ios/quixzoom/Info.plist; then echo -e "${GREEN}✅${NC} GPS capability declared" else echo -e "${RED}❌${NC} GPS capability missing" ERRORS=$((ERRORS + 1)) fi if grep -q "camera" ios/quixzoom/Info.plist; then echo -e "${GREEN}✅${NC} Camera capability declared" else echo -e "${RED}❌${NC} Camera capability missing" ERRORS=$((ERRORS + 1)) fi echo "" echo "🔐 Permissions Check" echo "--------------------" if grep -q "NSCameraUsageDescription" ios/quixzoom/Info.plist; then echo -e "${GREEN}✅${NC} Camera permission description" else echo -e "${RED}❌${NC} Camera permission description missing" ERRORS=$((ERRORS + 1)) fi if grep -q "NSLocationWhenInUseUsageDescription" ios/quixzoom/Info.plist; then echo -e "${GREEN}✅${NC} Location permission description" else echo -e "${RED}❌${NC} Location permission description missing" ERRORS=$((ERRORS + 1)) fi if grep -q "NSPhotoLibraryUsageDescription" ios/quixzoom/Info.plist; then echo -e "${GREEN}✅${NC} Photo library permission description" else echo -e "${RED}❌${NC} Photo library permission description missing" ERRORS=$((ERRORS + 1)) fi echo "" echo "================================" if [ $ERRORS -eq 0 ]; then echo -e "${GREEN}✅ Build verification PASSED${NC}" echo " $WARNINGS warnings" exit 0 else echo -e "${RED}❌ Build verification FAILED${NC}" echo " $ERRORS errors, $WARNINGS warnings" exit 1 fi