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

ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
IOS_PROJECT="$ROOT_DIR/ios/App/App.xcodeproj"
DERIVED_DATA_PATH="$ROOT_DIR/tmp/ios-release-derived-data"
ARCHIVE_PATH="$ROOT_DIR/output/ios/BiznisPortal.xcarchive"
EXPORT_PATH="$ROOT_DIR/output/ios/export"
EXPORT_OPTIONS_PATH="$ROOT_DIR/tmp/ios-export-options.plist"

export DEVELOPER_DIR="${DEVELOPER_DIR:-/Applications/Xcode.app/Contents/Developer}"

if [[ ! -d "$DEVELOPER_DIR" ]]; then
  echo "Puna Xcode instalacija nije pronađena na: $DEVELOPER_DIR" >&2
  exit 1
fi

if ! "$DEVELOPER_DIR/usr/bin/xcodebuild" -license check >/dev/null 2>&1; then
  echo "Xcode licenca nije prihvaćena na ovoj mašini." >&2
  echo "Pokreni: sudo xcodebuild -license accept" >&2
  exit 69
fi

for required_var in IOS_DEVELOPMENT_TEAM IOS_BUNDLE_IDENTIFIER IOS_EXPORT_METHOD; do
  if [[ -z "${!required_var:-}" ]]; then
    echo "Nedostaje promenljiva okruženja: $required_var" >&2
    exit 1
  fi
done

IOS_CODE_SIGN_STYLE="${IOS_CODE_SIGN_STYLE:-Automatic}"
IOS_PROVISIONING_PROFILE_SPECIFIER="${IOS_PROVISIONING_PROFILE_SPECIFIER:-}"
IOS_ALLOW_PROVISIONING_UPDATES="${IOS_ALLOW_PROVISIONING_UPDATES:-false}"

mkdir -p "$ROOT_DIR/output/ios" "$ROOT_DIR/tmp"
rm -rf "$ARCHIVE_PATH" "$EXPORT_PATH" "$DERIVED_DATA_PATH"

ALLOW_PROVISIONING_FLAG=()
if [[ "$IOS_ALLOW_PROVISIONING_UPDATES" == "true" ]]; then
  ALLOW_PROVISIONING_FLAG=(-allowProvisioningUpdates)
fi

PROVISIONING_FLAG=()
if [[ -n "$IOS_PROVISIONING_PROFILE_SPECIFIER" ]]; then
  PROVISIONING_FLAG=("PROVISIONING_PROFILE_SPECIFIER=$IOS_PROVISIONING_PROFILE_SPECIFIER")
fi

"$DEVELOPER_DIR/usr/bin/xcodebuild" \
  -project "$IOS_PROJECT" \
  -scheme App \
  -configuration Release \
  -destination "generic/platform=iOS" \
  -derivedDataPath "$DERIVED_DATA_PATH" \
  -archivePath "$ARCHIVE_PATH" \
  PRODUCT_BUNDLE_IDENTIFIER="$IOS_BUNDLE_IDENTIFIER" \
  DEVELOPMENT_TEAM="$IOS_DEVELOPMENT_TEAM" \
  CODE_SIGN_STYLE="$IOS_CODE_SIGN_STYLE" \
  "${PROVISIONING_FLAG[@]}" \
  "${ALLOW_PROVISIONING_FLAG[@]}" \
  archive

cat > "$EXPORT_OPTIONS_PATH" <<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>${IOS_EXPORT_METHOD}</string>
  <key>signingStyle</key>
  <string>${IOS_CODE_SIGN_STYLE}</string>
  <key>teamID</key>
  <string>${IOS_DEVELOPMENT_TEAM}</string>
  <key>compileBitcode</key>
  <false/>
</dict>
</plist>
EOF

"$DEVELOPER_DIR/usr/bin/xcodebuild" \
  -exportArchive \
  -archivePath "$ARCHIVE_PATH" \
  -exportPath "$EXPORT_PATH" \
  -exportOptionsPlist "$EXPORT_OPTIONS_PATH" \
  "${ALLOW_PROVISIONING_FLAG[@]}"

echo
echo "iOS release artefakti:"
echo "$ARCHIVE_PATH"
echo "$EXPORT_PATH"
