Skip to content

CI: Check Dart/Flutter bindings & run static code analysis for Dart/Flutter packages #326

CI: Check Dart/Flutter bindings & run static code analysis for Dart/Flutter packages

CI: Check Dart/Flutter bindings & run static code analysis for Dart/Flutter packages #326

Workflow file for this run

name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push events but only for the "main" branch
push:
branches: [ main ]
pull_request:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
fmt:
name: Cargo Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check Rust Formatting
run: |
cd lib
cargo fmt -- --check
cd ../cli
cargo fmt -- --check
clippy:
name: Cargo Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check Rust Clippy
run: |
cd lib
cargo clippy -- -D warnings
cd ../cli
cargo clippy -- -D warnings
build-bindings:
name: Test bindings
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Build bindings
working-directory: lib/bindings
run: cargo build
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Run bindings tests
run: |
curl -o jna-5.12.1.jar https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar
export CLASSPATH=$(pwd)/jna-5.12.1.jar;
cd lib/bindings
cargo test
react-native:
name: Check react native bindings
runs-on: macOS-14
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: React native codegen
working-directory: packages/react-native
run: |
yarn global add tslint typescript
brew update
brew install kotlin ktlint swiftformat
make react-native
- name: Check git status
env:
GIT_PAGER: cat
run: |
status=$(git status --porcelain)
if [[ -n "$status" ]]; then
echo "Git status has changes"
echo "$status"
git diff
exit 1
else
echo "No changes in git status"
fi
flutter:
name: Check Dart/Flutter bindings
runs-on: macOS-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter --version
- name: Set up just
uses: extractions/setup-just@v2
- name: Set up Melos
uses: bluefireteam/melos-action@v3
with:
run-bootstrap: false
- name: Initialize the workspace
working-directory: lib/bindings/bindings-flutter/
run: |
just clean
just init
- name: Install flutter_rust_bridge_codegen dependencies
working-directory: lib/bindings/bindings-flutter/
run: just frb
- name: Generate Dart/Flutter bindings
working-directory: lib/bindings/bindings-flutter/
run: |
just codegen
- name: Generate FFI bindings
working-directory: lib/bindings/bindings-flutter/
run: |
just ffigen
- name: Softlin header files
working-directory: lib/bindings/bindings-flutter/
run: |
just link
- name: Static Analysis
working-directory: lib/bindings/bindings-flutter/
run: melos analyze
- name: Check Formatting
working-directory: lib/bindings/bindings-flutter/
run: melos check-format
- name: Check git status
env:
GIT_PAGER: cat
run: |
status=$(git status --porcelain)
if [[ -n "$status" ]]; then
echo "Git status has changes"
echo "$status"
git diff
exit 1
else
echo "No changes in git status"
fi