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
9 changes: 9 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,14 @@ jobs:
- name: Show Swift version
run: swift --version

- name: Regenerate example client
run: make -C _examples/ClientExample generate

- name: Check regenerated example diff
run: make -C _examples diff

- name: Build example client
run: make -C _examples/ClientExample build

- name: Run shared Swift integration suite
run: ./Tests/test.sh
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,16 @@ The real external-schema integration remains available as an opt-in Go test:
WEBRPC_SWIFT_EXTERNAL_SCHEMA=1 go test ./...
```

Regenerate and build the tracked client example with:

```sh
make -C _examples/ClientExample generate
make -C _examples/ClientExample build
make -C _examples diff
```

CI runs the fast Go suite on every PR and push to `master`, and runs the shared Swift
integration suite on `macos-latest`.
integration suite and tracked example checks on `macos-latest`.

## Options

Expand Down
3 changes: 3 additions & 0 deletions _examples/ClientExample/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.build/
.swiftpm/
Package.resolved
9 changes: 9 additions & 0 deletions _examples/ClientExample/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.PHONY: all generate build

all: generate build

generate:
go -C ../../tools tool webrpc-gen -schema=../_examples/ClientExample/service.ridl -target=.. -client -out=../_examples/ClientExample/Sources/ClientExample/ExampleServiceClient.swift

build:
swift build --package-path .
16 changes: 16 additions & 0 deletions _examples/ClientExample/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// swift-tools-version: 5.9
import PackageDescription

let package = Package(
name: "WebRPCClientExample",
platforms: [
.macOS(.v12),
.iOS(.v15),
],
products: [
.library(name: "ClientExample", targets: ["ClientExample"]),
],
targets: [
.target(name: "ClientExample"),
]
)
21 changes: 21 additions & 0 deletions _examples/ClientExample/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# WebRPC Swift Client Example

This example shows generating a Swift client from [service.ridl](./service.ridl)
using the local generator templates.

## Usage

Regenerate the tracked client:

```sh
make generate
```

Build the Swift package:

```sh
make build
```

The schema includes representative cases for generated enum fallback naming,
method/type name collisions, and fields excluded with `json = -`.
Loading
Loading