Add CI typecheck for iOS UniFFI app bridge
This commit is contained in:
2
.github/workflows/ios-rust.yml
vendored
2
.github/workflows/ios-rust.yml
vendored
@@ -23,6 +23,8 @@ jobs:
|
||||
run: cargo test -p tele-ios-ffi --no-default-features --features standalone-fake
|
||||
- name: Swift FFI smoke
|
||||
run: scripts/smoke-ios-ffi-swift.sh /tmp/tele-ios-ffi-swift-smoke
|
||||
- name: Swift app UniFFI bridge typecheck
|
||||
run: scripts/typecheck-ios-uniffi-app-bridge.sh /tmp/tele-ios-ffi-swift-smoke /tmp/tele-ios-ffi-app-typecheck-module-cache
|
||||
- name: Generate iOS FFI bindings
|
||||
run: scripts/generate-ios-ffi-bindings.sh /tmp/tele-ios-ffi
|
||||
- name: Swift bindings typecheck
|
||||
|
||||
@@ -30,6 +30,12 @@ Run an executable Swift smoke test against matching fake-only UniFFI bindings:
|
||||
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer scripts/smoke-ios-ffi-swift.sh
|
||||
```
|
||||
|
||||
Typecheck the Swift app bridge against generated UniFFI bindings:
|
||||
|
||||
```bash
|
||||
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer scripts/typecheck-ios-uniffi-app-bridge.sh
|
||||
```
|
||||
|
||||
Current linking status:
|
||||
|
||||
- Xcode is installed at `/Applications/Xcode.app`, and `DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer xcodebuild -version` reports Xcode 26.5.
|
||||
|
||||
33
scripts/typecheck-ios-uniffi-app-bridge.sh
Executable file
33
scripts/typecheck-ios-uniffi-app-bridge.sh
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/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 \
|
||||
-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}"
|
||||
Reference in New Issue
Block a user