This commit is contained in:
40
scripts/setup-swift-bridge.sh
Normal file
40
scripts/setup-swift-bridge.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
# Setup Swift bridge files after cargo build
|
||||
|
||||
set -e
|
||||
|
||||
# Find the most recently built output directory
|
||||
OUT=$(find target/release/build -maxdepth 2 -type d -name out -path '*kreuzberg-swift-*' \
|
||||
-exec stat -f '%m %N' {} + 2>/dev/null | sort -rn | head -1 | cut -d' ' -f2-)
|
||||
if [ -z "$OUT" ]; then
|
||||
echo "ERROR: Could not find swift-bridge build output in target/release/build/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Using swift-bridge output from: $OUT"
|
||||
|
||||
# Fix swift-bridge visibility: make 'var ptr' and 'var isOwned' properties public for internal type conversion
|
||||
fixVisibility() {
|
||||
sed -e 's/^ var ptr: UnsafeMutableRawPointer$/ public var ptr: UnsafeMutableRawPointer/g' \
|
||||
-e 's/^ var isOwned: Bool = true$/ public var isOwned: Bool = true/g'
|
||||
}
|
||||
|
||||
# Ensure target directories exist
|
||||
mkdir -p packages/swift/Sources/RustBridgeC
|
||||
mkdir -p packages/swift/Sources/RustBridge
|
||||
|
||||
# Copy C headers
|
||||
cat "$OUT/SwiftBridgeCore.h" "$OUT/kreuzberg-swift/kreuzberg-swift.h" \
|
||||
>packages/swift/Sources/RustBridgeC/RustBridgeC.h
|
||||
|
||||
# Copy Swift bridge files with import statement prepended
|
||||
{
|
||||
printf 'import RustBridgeC\n'
|
||||
cat "$OUT/SwiftBridgeCore.swift" | fixVisibility
|
||||
} >packages/swift/Sources/RustBridge/SwiftBridgeCore.swift
|
||||
{
|
||||
printf 'import RustBridgeC\n'
|
||||
cat "$OUT/kreuzberg-swift/kreuzberg-swift.swift" | fixVisibility
|
||||
} >packages/swift/Sources/RustBridge/kreuzberg-swift.swift
|
||||
|
||||
echo "Swift-bridge files setup complete"
|
||||
Reference in New Issue
Block a user