#!/usr/bin/env bash set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ffi_dir="${1:-/private/tmp/tele-ios-ffi-swift-smoke}" module_cache="${2:-/private/tmp/tele-ios-ffi-app-typecheck-module-cache}" if [[ -z "${DEVELOPER_DIR:-}" && -d /Applications/Xcode.app/Contents/Developer ]]; then export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer fi if [[ ! -f "${ffi_dir}/Swift/tele_ios_ffi.swift" || ! -f "${ffi_dir}/Headers/module.modulemap" ]]; then "${repo_root}/scripts/smoke-ios-ffi-swift.sh" "${ffi_dir}" fi swiftc \ -typecheck \ -parse-as-library \ -D TELE_IOS_TYPECHECK_UNIFFI \ -module-name TeleTuiIOSCore \ -module-cache-path "${module_cache}" \ -I "${ffi_dir}/Headers" \ "${ffi_dir}/Swift/tele_ios_ffi.swift" \ "${repo_root}/apps/ios/TeleTuiIOS/Sources/TeleTuiIOSCore/Models.swift" \ "${repo_root}/apps/ios/TeleTuiIOS/Sources/TeleTuiIOSCore/Bridge.swift" \ "${repo_root}/apps/ios/TeleTuiIOS/Sources/TeleTuiIOSCore/Lifecycle.swift" \ "${repo_root}/apps/ios/TeleTuiIOS/Sources/TeleTuiIOSCore/PlatformServices.swift" \ "${repo_root}/apps/ios/TeleTuiIOS/Sources/TeleTuiIOSCore/SessionBridgeFactory.swift" \ "${repo_root}/apps/ios/TeleTuiIOS/Sources/TeleTuiIOSCore/Storage.swift" \ "${repo_root}/apps/ios/TeleTuiIOS/Sources/TeleTuiIOSCore/ViewModels.swift" \ "${repo_root}/apps/ios/TeleTuiIOS/Sources/TeleTuiIOSCore/Views.swift" \ "${repo_root}/apps/ios/TeleTuiIOS/Sources/TeleTuiIOSCore/UniFfiSessionBridge.swift" printf 'Typechecked TeleTuiIOSCore against UniFFI Swift bindings in %s\n' "${ffi_dir}"