feat(lan): add remote service controls and discovery wiring #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: FFI Drift Check | |
| on: | |
| push: | |
| branches: | |
| - development | |
| - main | |
| - stable | |
| paths: | |
| - 'Shared/ArcadiaCore/src/ffi.rs' | |
| - 'Shared/ArcadiaCore/src/**.rs' | |
| - 'Mobile/iOS/ArcadiaCore/Generated/**' | |
| pull_request: | |
| branches: | |
| - development | |
| - main | |
| - stable | |
| paths: | |
| - 'Shared/ArcadiaCore/src/ffi.rs' | |
| - 'Shared/ArcadiaCore/src/**.rs' | |
| - 'Mobile/iOS/ArcadiaCore/Generated/**' | |
| workflow_dispatch: | |
| jobs: | |
| ffi-drift: | |
| name: Check FFI bindings drift | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install iOS target | |
| run: rustup target add aarch64-apple-ios | |
| - name: Cache Rust dependencies | |
| uses: swatinem/rust-cache@v2 | |
| with: | |
| workspaces: Shared -> target | |
| - name: Build arcadia-core for iOS device | |
| run: | | |
| cd Shared | |
| cargo build -p arcadia-core --release --target aarch64-apple-ios | |
| - name: Generate Swift bindings into temp dir | |
| run: | | |
| mkdir -p /tmp/ffi-generated | |
| cd Shared | |
| cargo run -p uniffi-bindgen -- generate \ | |
| --library target/aarch64-apple-ios/release/libarcadia_core.a \ | |
| --language swift \ | |
| --out-dir /tmp/ffi-generated | |
| - name: Diff generated bindings against checked-in | |
| run: | | |
| CHECKED_SWIFT="Mobile/iOS/ArcadiaCore/Generated/arcadia_core.swift" | |
| GENERATED_SWIFT="/tmp/ffi-generated/arcadia_core.swift" | |
| # Detect header filename (uniffi may name it arcadia_coreFFI.h or arcadia_coreCFFI.h) | |
| GENERATED_H=$(ls /tmp/ffi-generated/*.h 2>/dev/null | head -1) | |
| CHECKED_H="" | |
| if [[ -n "$GENERATED_H" ]]; then | |
| HEADER_BASENAME=$(basename "$GENERATED_H") | |
| CHECKED_H="Mobile/iOS/ArcadiaCore/Generated/$HEADER_BASENAME" | |
| fi | |
| DRIFT=0 | |
| if ! diff -q "$GENERATED_SWIFT" "$CHECKED_SWIFT" > /dev/null 2>&1; then | |
| echo "::error::Swift bindings drift detected in $CHECKED_SWIFT" | |
| diff "$GENERATED_SWIFT" "$CHECKED_SWIFT" || true | |
| DRIFT=1 | |
| fi | |
| if [[ -n "$CHECKED_H" ]] && [[ -f "$CHECKED_H" ]]; then | |
| if ! diff -q "$GENERATED_H" "$CHECKED_H" > /dev/null 2>&1; then | |
| echo "::error::FFI header drift detected in $CHECKED_H" | |
| diff "$GENERATED_H" "$CHECKED_H" || true | |
| DRIFT=1 | |
| fi | |
| fi | |
| if [[ "$DRIFT" -eq 1 ]]; then | |
| echo "" | |
| echo "FFI bindings are out of sync. Run:" | |
| echo " bash Shared/Scripts/build-ios-framework.sh" | |
| echo "and commit the updated Generated/ directory." | |
| exit 1 | |
| fi | |
| echo "FFI bindings match checked-in version." |