#!/usr/bin/env bash
set -euo pipefail

ENV_FILE=".env.ios"
# === צריך להריץ פעם אחת לפני בניה  ===

# === chmod +x build-publish-ios.sh  ===
# === טוען .env ===
if [[ ! -f $ENV_FILE ]]; then echo "❌ .env not found" >&2; exit 1; fi
while IFS='=' read -r key value; do
  [[ -z $key || $key == \#* ]] && continue
  value="${value//$'\r'/}"
  export "$key=$value"
done < "$ENV_FILE"

# set publish_scripts directory
# set app_store_api.sh path - נמצא באותה תיקייה כמו הסקריפט הזה
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
APP_STORE_API_SH="$SCRIPT_DIR/app_store_api.sh"

# בדיקה שהקובץ קיים
[[ ! -f "$APP_STORE_API_SH" ]] && { echo "❌ app_store_api.sh not found at $APP_STORE_API_SH"; exit 1; }

# וידוא שהקובץ הוא executable
chmod +x "$APP_STORE_API_SH"



# set ios project directory
IOS_PROJECT_DIRECTORY="cordova_ios"

: "${IOS_PROJECT_DIRECTORY:?IOS_PROJECT_DIRECTORY mi sing}"

# הפוך לנתיב אבסולוטי
IOS_PROJECT_DIRECTORY=$(cd "$IOS_PROJECT_DIRECTORY" && pwd)
CONFIG_XML="$IOS_PROJECT_DIRECTORY/config.xml"
[[ ! -f "$CONFIG_XML" ]] && { echo "❌ config.xml not found at $CONFIG_XML"; exit 1; }

# === שליפת <name> ===
APP_NAME=$(xmllint --xpath 'string(//*[local-name()="widget"]/*[local-name()="name"])' "$CONFIG_XML")
[[ -z "$APP_NAME" ]] && { echo "❌ <name> not found in config.xml"; exit 1; }

# === שליפת version (אם קיימת ותקינה) ===
VERSION=$(xmllint --xpath 'string(//*[local-name()="widget"]/@version)' "$CONFIG_XML")

if [[ "$VERSION" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
  major="${BASH_REMATCH[1]}"
  minor="${BASH_REMATCH[2]}"
  patch="${BASH_REMATCH[3]}"
  ((patch++)); ((patch >= 10)) && patch=0 && ((minor++))
  ((minor >= 10)) && minor=0 && ((major++))
  new_version="$major.$minor.$patch"

  # עדכון בקובץ
  sed -i '' -E "s/(<widget[^>]*version=\")[^\"]+(\")/\1$new_version\2/" "$CONFIG_XML"
  echo "✅ $APP_NAME: Version bumped to $new_version"
else
  echo "⚠️  Version in config.xml is invalid ('$VERSION') – skipping version bump"
fi

# === העתקת dist ל-www ===
echo "🔄 Copying dist → $IOS_PROJECT_DIRECTORY/www"
rm -rf "$IOS_PROJECT_DIRECTORY/www"
mkdir -p "$IOS_PROJECT_DIRECTORY/www"
cp -R dist/. "$IOS_PROJECT_DIRECTORY/www"

# === Cordova prepare (no build) ===
cd "$IOS_PROJECT_DIRECTORY"
echo "🏗️  Cordova prepare (iOS)..."
cordova prepare ios

# === תיקון Podfile אוטומטי ===
echo "🔧 Adding post_install hook to Podfile..."
PODFILE_PATH="platforms/ios/Podfile"
if ! grep -q "post_install" "$PODFILE_PATH"; then
  cat >> "$PODFILE_PATH" << 'PODFILE_EOF'

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
      config.build_settings['CODE_SIGN_IDENTITY'] = ''
      config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO'
      config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
    end
  end
end
PODFILE_EOF
  echo "✅ Added post_install hook to Podfile"
  cd platforms/ios && pod install
  cd ../../
else
  echo "✅ post_install hook already exists"
fi

# === תיקון CODE_SIGN_IDENTITY בקבצי xcconfig ===
echo "🔧 Fixing CODE_SIGN_IDENTITY in xcconfig files..."
BUILD_RELEASE_XCCONFIG="platforms/ios/cordova/build-release.xcconfig"
if [[ -f "$BUILD_RELEASE_XCCONFIG" ]]; then
  sed -i '' 's/CODE_SIGN_IDENTITY = iPhone Distribution/CODE_SIGN_IDENTITY = Apple Development/g' "$BUILD_RELEASE_XCCONFIG"
  sed -i '' 's/CODE_SIGN_IDENTITY\[sdk=iphoneos\*\] = iPhone Distribution/CODE_SIGN_IDENTITY[sdk=iphoneos*] = Apple Development/g' "$BUILD_RELEASE_XCCONFIG"
  echo "✅ Fixed CODE_SIGN_IDENTITY in build-release.xcconfig"
fi

# === תיקון Development Team בקובץ הפרויקט ===
echo "🔧 Setting DEVELOPMENT_TEAM in project.pbxproj..."
PBXPROJ_PATH="platforms/ios/$APP_NAME.xcodeproj/project.pbxproj"
if [[ -f "$PBXPROJ_PATH" ]]; then
  # החלף את DEVELOPMENT_TEAM בכל מקום בקובץ
  sed -i '' "s/DEVELOPMENT_TEAM = \"\";/DEVELOPMENT_TEAM = \"${DEVELOPMENT_TEAM:-BZ4888B729}\";/g" "$PBXPROJ_PATH"
  sed -i '' "s/DEVELOPMENT_TEAM = \"\"/DEVELOPMENT_TEAM = \"${DEVELOPMENT_TEAM:-BZ4888B729}\"/g" "$PBXPROJ_PATH"
  # הוסף DEVELOPMENT_TEAM אם לא קיים
  sed -i '' '/buildSettings = {/a\
				DEVELOPMENT_TEAM = "'"${DEVELOPMENT_TEAM:-BZ4888B729}"'";
' "$PBXPROJ_PATH"
  echo "✅ Set DEVELOPMENT_TEAM to ${DEVELOPMENT_TEAM:-BZ4888B729}"
fi

# === Xcode Archive ===
cd platforms/ios
WORKSPACE="$APP_NAME.xcworkspace"
SCHEME="$APP_NAME"
ARCHIVE_PATH="build/$APP_NAME.xcarchive"

echo "📦 Archiving with xcodebuild..."
xcodebuild \
  -workspace "$WORKSPACE" \
  -scheme "$SCHEME" \
  -configuration Release \
  -destination generic/platform=iOS \
  -archivePath "$ARCHIVE_PATH" \
  -allowProvisioningUpdates \
  archive \
  SUPPORTS_MACCATALYST=NO \
  DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER=NO \
  SUPPORTED_PLATFORMS="iphonesimulator iphoneos" \
  IPHONEOS_DEPLOYMENT_TARGET=13.0 \
  DEVELOPMENT_TEAM="${DEVELOPMENT_TEAM:-BZ4888B729}" \
  CODE_SIGN_STYLE=Automatic

echo "✅ Archive created at: $ARCHIVE_PATH"

# === יצירת .ipa מתוך הארכיב ===
EXPORT_TEMP_DIR="$(mktemp -d)"
EXPORT_PLIST="$EXPORT_TEMP_DIR/exportOptions.plist"
IPA_OUTPUT_PATH="$EXPORT_TEMP_DIR/$APP_NAME.ipa"

# צור exportOptions.plist זמני
cat > "$EXPORT_PLIST" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>method</key><string>app-store-connect</string>
  <key>signingStyle</key><string>automatic</string>
  <key>destination</key><string>export</string>
  <key>teamID</key><string>${DEVELOPMENT_TEAM:-BZ4888B729}</string>
  <key>uploadBitcode</key><false/>
  <key>compileBitcode</key><true/>
  <key>stripSwiftSymbols</key><true/>
</dict>
</plist>
EOF

echo "📦 Exporting IPA..."
xcodebuild -exportArchive \
  -archivePath "$ARCHIVE_PATH" \
  -exportPath "$EXPORT_TEMP_DIR" \
  -exportOptionsPlist "$EXPORT_PLIST" \
  -allowProvisioningUpdates

# === שליחה ל־TestFlight ===
echo "🚀 Uploading IPA to TestFlight via altool..."
echo "passwordsss"
echo "apple id: $APPLE_ID"

echo "password: $APP_PASSWORD"

echo "apple id: $APPLE_ID"
xcrun altool --upload-app \
  --type ios \
  --file "$IPA_OUTPUT_PATH" \
  --username "$APPLE_ID" \
  --password "$APP_PASSWORD" \
  --verbose

echo "✅ Uploaded to TestFlight!"






# === שליחה אוטומטית לאישור ופרסום ===


# קבל את ה-Bundle ID
BUNDLE_ID=$(xmllint --xpath 'string(//*[local-name()="widget"]/@id)' "$CONFIG_XML")
echo "📦 Bundle ID: $BUNDLE_ID"

# בדיקה אם רוצים שליחה אוטומטית
if [[ "${AUTO_SUBMIT_FOR_REVIEW:-}" == "true" ]]; then
  echo ""
  echo "🚀 AUTO_SUBMIT_FOR_REVIEW enabled - attempting automatic submission..."
  
  # בדיקה שיש את כל המפתחות הנדרשים
  if [[ -n "${APP_STORE_CONNECT_API_KEY_ID:-}" && \
        -n "${APP_STORE_CONNECT_API_ISSUER_ID:-}" && \
        -n "${APP_STORE_CONNECT_API_KEY_FILENAME:-}" ]]; then
    
    echo "🔑 App Store Connect API credentials found"
    
    # הצגת מידע על release notes
    if [[ "${RELEASE_NOTES_AUTO_GENERATE:-}" == "true" ]]; then
      echo "📝 Release notes auto-generation: ENABLED"
      echo "   📄 English: ${RELEASE_NOTES_EN:-Default message}"
      echo "   📄 Hebrew: ${RELEASE_NOTES_HE:-הודעת ברירת מחדל}"
      if [[ "${RELEASE_NOTES_INCLUDE_VERSION:-}" == "true" ]]; then
        echo "   🔢 Version info will be included"
      fi
      if [[ "${RELEASE_NOTES_INCLUDE_DATE:-}" == "true" ]]; then
        echo "   📅 Release date will be included"
      fi
    else
      echo "⚠️  Release notes auto-generation: DISABLED"
      echo "   💡 Enable with RELEASE_NOTES_AUTO_GENERATE=true in .env.ios"
    fi
    
    echo "⏳ Waiting for TestFlight upload to process (60 seconds)..."
    sleep 60
    
    echo "🎯 Submitting for App Store review using API..."
    
    # הרצת הסקריפט API עם כל הפרמטרים הנדרשים
    # המרת נתיב יחסי לאבסולוטי אם נדרש
      # אם זה נתיב יחסי, הפוך אותו לאבסולוטי מתיקיית הסקריפט
      APP_STORE_CONNECT_API_KEY_PATH="$SCRIPT_DIR/$APP_STORE_CONNECT_API_KEY_FILENAME"
    
    
    # העברת הגרסה החדשה לסקריפט ה-API
    export CURRENT_VERSION="$new_version"
    
    if bash "$APP_STORE_API_SH" "$BUNDLE_ID" "$APP_STORE_CONNECT_API_KEY_ID" "$APP_STORE_CONNECT_API_ISSUER_ID" "$APP_STORE_CONNECT_API_KEY_PATH"; then
      echo ""
      echo "🎉 SUCCESS! App submitted for review automatically!"
      echo "📱 Track progress at: https://appstoreconnect.apple.com/"
      echo ""
      echo "💡 The app will be released automatically after Apple approval"
      echo "   (You can change this in App Store Connect if needed)"
    else
      echo ""
      echo "❌ Automatic submission failed"
      echo "📱 Please submit manually via App Store Connect"
      echo "   https://appstoreconnect.apple.com/"
    fi
  else
    echo "❌ Missing API credentials. Please set:"
    echo "   APP_STORE_CONNECT_API_KEY_ID=your_key_id"
    echo "   APP_STORE_CONNECT_API_ISSUER_ID=your_issuer_id"
    echo "   APP_STORE_CONNECT_API_KEY_FILENAME=AuthKey_XXXXX.p8"
    echo ""
    echo "📱 For now, submit manually: https://appstoreconnect.apple.com/"
  fi
else
  echo ""
  echo "📋 Manual submission needed:"
  echo "   1. Go to https://appstoreconnect.apple.com/"
  echo "   2. Select your app"
  echo "   3. Submit the latest build for review"
  echo ""
  echo "🔧 For automatic submission, add to .env.ios:"
  echo "   AUTO_SUBMIT_FOR_REVIEW=true"
  echo "   APP_STORE_CONNECT_API_KEY_ID=your_key_id"
  echo "   APP_STORE_CONNECT_API_ISSUER_ID=your_issuer_id"
  echo "   APP_STORE_CONNECT_API_KEY_FILENAME=AuthKey_XXXXX.p8"
  echo ""
  echo "📝 For automatic release notes, also add:"
  echo "   RELEASE_NOTES_AUTO_GENERATE=true"
  echo "   RELEASE_NOTES_EN=\"Your English release notes\""
  echo "   RELEASE_NOTES_HE=\"הודעת השחרור שלך בעברית\""
fi

echo ""
echo "🎉 Build process completed!"
echo "📱 Your app is ready!"

echo ""
echo "📋 What happens next:"
if [[ "${AUTO_SUBMIT_FOR_REVIEW:-}" == "true" ]]; then
  echo "   ✅ App submitted automatically for Apple review"
  echo "   ⏳ Apple will review (usually 1-3 days)"
  echo "   🚀 App will release automatically after approval"
else
  echo "   📱 Submit manually via App Store Connect"
  echo "   💡 Or enable AUTO_SUBMIT_FOR_REVIEW for automation"
fi

echo ""
echo "🔗 Useful links:"
echo "   App Store Connect: https://appstoreconnect.apple.com/"
echo "   API Setup Guide: $(dirname "$0")/AUTO_SUBMISSION_SETUP.md"