#!/usr/bin/env bash
set -e
set -u
set -o pipefail
trap 'echo "An error occurred. Exiting."; exit 1' ERR

export LANG=en_US.UTF-8

. ./build_script/android/functions.sh

ARCHIVE_ROOT='ios/build/archive'
IPA_ROOT='ios/build/ipa'
PLIST_FILE='build_script/ios_new/Info.plist'

buildEnv="$1"
buildVersionName="$2"
buildVersionNumber="$3"
USERNAME="$4"
PASSWORD="$5"
DEPLOY="$6"
BRANCH="$7"
IS_PC_BUILD="$8"

flutter clean
flutter pub get

rm -rf ios/build

export PATH=$PATH:/usr/local/bin
cd ./ios
ls
if [ -d "Pods" ]; then
    echo 'Pods exist'
    rm -rf Pods
    echo 'Pods removed'
fi
if [ -f "Podfile.lock" ]; then
    echo 'Podfile.lock exist'
    rm Podfile.lock
    echo 'Podfile.lock removed'
fi
#pod install --repo-update
cd ..

echo 'Flutter Build Start!'
flutter build ios --release  --dart-define=ENVIRONMENT=$buildEnv --build-name=$buildVersionName --build-number=$buildVersionNumber
echo 'Flutter Build Finish!'

echo 'Archive Start!'
mkdir -p $ARCHIVE_ROOT

xcodebuild clean archive \
-workspace "ios/Runner.xcworkspace" \
-scheme "Runner" \
-archivePath "$ARCHIVE_ROOT/archive.xcarchive" \
-configuration "Release" \
-parallelizeTargets \
-destination "generic/platform=iOS"

echo 'Archive Finish!'

echo 'Export IPA Start!'
mkdir -p $IPA_ROOT

xcodebuild archive  -exportArchive \
-archivePath "$ARCHIVE_ROOT/archive.xcarchive"  \
-exportPath "$IPA_ROOT" \
-exportOptionsPlist "$PLIST_FILE" \
-destination "generic/platform=iOS"  \
-allowProvisioningUpdates

echo 'Export IPA Finish!'

if [ "$DEPLOY" = "true" ]; then
    echo 'Validate IPA Start!'
    xcrun altool --validate-app -f "$IPA_ROOT/Gtleadinglope.ipa" -u "$USERNAME" -p "$PASSWORD" --type ios
    echo 'Validate IPA Finish!'
    echo 'Upload IPA Start!'
    xcrun altool --upload-app -f "$IPA_ROOT/Gtleadinglope.ipa" -u "$USERNAME" -p "$PASSWORD" --type ios
    build_info="$buildVersionName-$buildVersionNumber-$buildEnv"
    qwmsgios "$build_info" "$BRANCH"
    echo 'Upload IPA Finish!'
fi

if [ "$IS_PC_BUILD" = "true" ] &&  [ "$DEPLOY" = "true" ]; then
    apkAddress=""
    aabAddress=""
    debugSymbolAddress=""
    mappingAddress=""
    platform="iOS"
    versionNumber=$buildVersionNumber
    versionName=$buildVersionName
    env=$buildEnv
    infoResult=$(python3 ./build_script/script/publish_info.py "$apkAddress" "$aabAddress" \
    "$debugSymbolAddress" "$mappingAddress" "$platform" "$versionNumber" "$versionName" "$env")
      if [ "$infoResult" == "200" ]; then
        qwmsg "PC IOS端构建成功"
        echo "通知成功"
      else
        qwmsg "PC IOS端构建失败 $infoResult"
        echo "通知失败"
      fi
fi