Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ jobs:
cache-dependency-path: WebSocketServer/package-lock.json
- run: npm ci

spm:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- name: Build via Swift Package Manager
run: ./scripts/build-spm-package.sh

ios:
runs-on: macos-14
steps:
Expand Down
12 changes: 6 additions & 6 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 10 additions & 7 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
// swift-tools-version:5.1
// swift-tools-version:5.5
import PackageDescription

let package = Package(
name: "RIBsTreeViewerClient",
platforms: [.iOS(.v13)],
platforms: [.iOS(.v15)],
products: [
.library(name: "RIBsTreeViewerClient", targets: ["RIBsTreeViewerClient"]),
],
dependencies: [
.package(url: "https://github.com/ReactiveX/RxSwift.git", from: "5.1.1"),
.package(url: "https://github.com/uber/RIBs.git", .branch("master")),
.package(url: "https://github.com/uber/RIBs-iOS.git", from: "1.0.0"),
.package(url: "https://github.com/ReactiveX/RxSwift.git", "6.9.0"..<"7.0.0"),
],
targets: [
.target(
name: "RIBsTreeViewerClient",
dependencies: ["RxSwift", "RxCocoa", "RIBs"],
path: "./RIBsTreeViewerClient/Sources"
)
dependencies: [
.product(name: "RIBs", package: "RIBs-iOS"),
.product(name: "RxSwift", package: "RxSwift"),
],
path: "RIBsTreeViewerClient/Sources"
),
]
)
17 changes: 15 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,19 @@ Add the xcframework to your project。
./Products/RIBsTreeViewerClient.xcframework
```

### Swift Package Manager (in progress)

SPM integration is being rolled out in [#38](https://github.com/srea/RIBsTreeViewerClient/issues/38). For local development of this repo:

```swift
// Package.swift dependency (consumer apps)
.package(url: "https://github.com/srea/RIBsTreeViewerClient.git", from: "1.0.7"),
```

Or add this package in Xcode via **File → Add Package Dependencies** (once a tagged release includes SPM support).

Requirements when using SPM: **iOS 15+**, [RIBs-iOS](https://github.com/uber/RIBs-iOS) 1.0+, RxSwift 6.x.

### CocoaPods

This is not supported because the RIBs do not provide an up-to-date PodSpec, making it difficult to resolve dependencies.
Expand All @@ -34,7 +47,7 @@ github "srea/RIBsTreeViewerClient"
$ make setup
```

Requires Xcode 15+ and [Carthage](https://github.com/Carthage/Carthage). Dependencies are built as XCFrameworks (Apple Silicon–compatible). Minimum iOS: **13.0**.
Requires Xcode 15+ and [Carthage](https://github.com/Carthage/Carthage). Dependencies are built as XCFrameworks (Apple Silicon–compatible). Minimum iOS: **13.0** (library source targets **15.0+** when using SPM — see [#38](https://github.com/srea/RIBsTreeViewerClient/issues/38)).

To regenerate the prebuilt `Products/RIBsTreeViewerClient.xcframework` after source changes:

Expand Down Expand Up @@ -86,7 +99,7 @@ import RIBsTreeViewerClient

extension AppDelegate {
private func startRIBsTreeViewer(launchRouter: Routing) {
if #available(iOS 13.0, *) {
if #available(iOS 15.0, *) {
ribsTreeViewer = RIBsTreeViewerImpl.init(router: launchRouter,
options: [.webSocketURL("ws://0.0.0.0:8080"),
.monitoringIntervalMillis(1000)])
Expand Down
20 changes: 10 additions & 10 deletions RIBsTreeViewerClient/Sources/RIBsTreeViewer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public enum RIBsTreeViewerOption {
case monitoringIntervalMillis(Int)
}

@available(iOS 13.0, *)
@available(iOS 15.0, *)
public class RIBsTreeViewerImpl: RIBsTreeViewer {

private let router: Routing
Expand Down Expand Up @@ -109,7 +109,7 @@ public class RIBsTreeViewerImpl: RIBsTreeViewer {
}
}

@available(iOS 13.0, *)
@available(iOS 15.0, *)
extension RIBsTreeViewerImpl {
private func captureView(from targetRouter: String) -> Data? {
guard let router = findRouter(target: targetRouter, router: router) as? ViewableRouting,
Expand All @@ -132,7 +132,7 @@ extension RIBsTreeViewerImpl {
}
}

@available(iOS 13.0, *)
@available(iOS 15.0, *)
extension RIBsTreeViewerImpl: WebSocketClientDelegate {
func onConnected(client: WebSocketClient) {
}
Expand All @@ -157,19 +157,19 @@ extension RIBsTreeViewerImpl: WebSocketClientDelegate {
}

protocol WebSocketClientDelegate: AnyObject {
@available(iOS 13.0, *)
@available(iOS 15.0, *)
func onConnected(client: WebSocketClient)
@available(iOS 13.0, *)
@available(iOS 15.0, *)
func onDisconnected(client: WebSocketClient)
@available(iOS 13.0, *)
@available(iOS 15.0, *)
func onMessage(client: WebSocketClient, text: String)
@available(iOS 13.0, *)
@available(iOS 15.0, *)
func onMessage(client: WebSocketClient, data: Data)
@available(iOS 13.0, *)
@available(iOS 15.0, *)
func onError(client: WebSocketClient, error: Error)
}

@available(iOS 13.0, *)
@available(iOS 15.0, *)
class WebSocketClient: NSObject {

weak var delegate: WebSocketClientDelegate?
Expand Down Expand Up @@ -239,7 +239,7 @@ class WebSocketClient: NSObject {

}

@available(iOS 13.0, *)
@available(iOS 15.0, *)
extension WebSocketClient: URLSessionWebSocketDelegate {
func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didOpenWithProtocol protocol: String?) {
self.delegate?.onConnected(client: self)
Expand Down
19 changes: 19 additions & 0 deletions scripts/build-spm-package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
# Build RIBsTreeViewerClient via Swift Package Manager (iOS Simulator).
# See https://github.com/srea/RIBsTreeViewerClient/issues/38
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"

swift package resolve

SDK="$(xcrun --sdk iphonesimulator --show-sdk-path)"
swift build \
--build-path .build/spm-check \
-Xswiftc -sdk -Xswiftc "$SDK" \
-Xswiftc -target -Xswiftc arm64-apple-ios15.0-simulator \
-Xcc -isysroot -Xcc "$SDK" \
-Xcc -target -Xcc arm64-apple-ios15.0-simulator

echo "SPM build succeeded (RIBsTreeViewerClient for iOS Simulator)"
Loading