Files
breez-sdk-liquid/.github/workflows/build-language-bindings.yml
2025-05-23 16:26:33 +02:00

168 lines
5.3 KiB
YAML

name: Build Language bindings
on:
workflow_dispatch:
inputs:
ref:
description: 'commit/tag/branch reference'
required: true
type: string
kotlin:
required: false
type: boolean
default: false
swift:
required: false
type: boolean
default: false
python:
required: false
type: boolean
default: false
csharp:
required: false
type: boolean
default: false
golang:
required: false
type: boolean
default: false
workflow_call:
inputs:
repository:
description: 'sdk repository, defaults to current repository'
required: false
type: string
ref:
description: 'commit/tag/branch reference'
required: true
type: string
kotlin:
required: false
type: boolean
default: false
swift:
required: false
type: boolean
default: false
python:
required: false
type: boolean
default: false
csharp:
required: false
type: boolean
default: false
golang:
required: false
type: boolean
default: false
jobs:
build-language-bindings:
runs-on: ubuntu-latest
if: ${{ inputs.csharp || inputs.golang || inputs.kotlin || inputs.python || inputs.swift }}
steps:
- name: Checkout breez-sdk-liquid repo
uses: actions/checkout@v4
with:
repository: ${{ inputs.repository || github.repository }}
ref: ${{ inputs.ref || github.sha }}
- name: Install rust
run: |
rustup set auto-self-update disable
rustup toolchain install stable --profile minimal
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
version: "27.2"
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: Swatinem/rust-cache@v2
with:
workspaces: lib
- name: Build Swift binding
if: ${{ inputs.swift }}
working-directory: lib/bindings
run: |
cargo run --bin uniffi-bindgen generate src/breez_sdk_liquid.udl --no-format --language swift --out-dir langs/swift/Sources/BreezSDKLiquid
mv langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquid.swift langs/swift/Sources/BreezSDKLiquid/BreezSDKLiquid.swift
- name: Archive Swift binding
if: ${{ inputs.swift }}
uses: actions/upload-artifact@v4
with:
name: bindings-swift
path: lib/bindings/langs/swift/Sources/BreezSDKLiquid/*
- name: Build Python binding
if: ${{ inputs.python }}
working-directory: lib/bindings
run: |
cargo run --bin uniffi-bindgen generate src/breez_sdk_liquid.udl --language python -o ffi/python
- name: Archive Python binding
if: ${{ inputs.python }}
uses: actions/upload-artifact@v4
with:
name: bindings-python
path: lib/bindings/ffi/python/breez_sdk_liquid.py
- name: Build C# binding
if: ${{ inputs.csharp }}
working-directory: lib/bindings
run: |
cargo install uniffi-bindgen-cs --git https://github.com/NordSecurity/uniffi-bindgen-cs --tag v0.9.1+v0.28.3
uniffi-bindgen-cs src/breez_sdk_liquid.udl -o ffi/csharp -c ./uniffi.toml
- name: Archive C# binding
if: ${{ inputs.csharp }}
uses: actions/upload-artifact@v4
with:
name: bindings-csharp
path: lib/bindings/ffi/csharp/breez_sdk_liquid.cs
- name: Build Kotlin binding
if: ${{ inputs.kotlin }}
working-directory: lib/bindings
run: |
cargo install gobley-uniffi-bindgen --git https://github.com/breez/gobley --rev f920c275e4f60e22080a6cd280d9562d64eb6ac9
gobley-uniffi-bindgen -c ./uniffi.toml -o ffi/kotlin src/breez_sdk_liquid.udl
- name: Archive Kotlin binding
if: ${{ inputs.kotlin }}
uses: actions/upload-artifact@v4
with:
name: bindings-kotlin
path: lib/bindings/ffi/kotlin/main/kotlin/breez_sdk_liquid/breez_sdk_liquid.*.kt
- name: Build Kotlin multiplatform binding
if: ${{ inputs.kotlin }}
working-directory: lib/bindings
run: |
cargo install gobley-uniffi-bindgen --git https://github.com/breez/gobley --rev f920c275e4f60e22080a6cd280d9562d64eb6ac9
gobley-uniffi-bindgen -c ./uniffi.kotlin-multiplatform.toml -o ffi/kmp src/breez_sdk_liquid.udl
- name: Archive Kotlin multiplatform binding
if: ${{ inputs.kotlin }}
uses: actions/upload-artifact@v4
with:
name: bindings-kotlin-multiplatform
path: lib/bindings/ffi/kmp/*
- name: Build golang binding
if: ${{ inputs.golang }}
working-directory: lib/bindings
run: |
cargo install uniffi-bindgen-go --git https://github.com/NordSecurity/uniffi-bindgen-go --tag v0.3.0+v0.28.3
uniffi-bindgen-go src/breez_sdk_liquid.udl -o ffi/golang -c ./uniffi.toml
- name: Archive golang binding
if: ${{ inputs.golang }}
uses: actions/upload-artifact@v4
with:
name: bindings-golang
path: lib/bindings/ffi/golang/breez_sdk_liquid/breez_sdk_liquid.*