onde 0.1.1

On-device inference engine for Apple silicon.
Documentation
name: CI

on:
  push:
    branches: [main, development]
  pull_request:
    branches: [main, development]
  workflow_dispatch:

concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read

jobs:
  # ── Formatting ────────────────────────────────────────────────────────────
  fmt:
    name: Format
    runs-on: macos-15
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: cargo fmt --all -- --check

  # ── Lint ──────────────────────────────────────────────────────────────────
  clippy:
    name: Clippy (macOS)
    runs-on: macos-15
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - uses: Swatinem/rust-cache@v2
      - run: cargo clippy --all-targets -- -D warnings

  # ── Tests (macOS — the only platform where tests run natively) ────────────
  test:
    name: Test (macOS)
    runs-on: macos-15
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: cargo test --lib

  # ── Cross-compile checks for all Apple platforms ──────────────────────────
  check-ios:
    name: Check (iOS device)
    runs-on: macos-15
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: aarch64-apple-ios
      - uses: Swatinem/rust-cache@v2
        with:
          key: ios
      - run: cargo check --target aarch64-apple-ios

  check-ios-sim:
    name: Check (iOS simulator)
    runs-on: macos-15
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: aarch64-apple-ios-sim
      - uses: Swatinem/rust-cache@v2
        with:
          key: ios-sim
      - run: cargo check --target aarch64-apple-ios-sim

  check-tvos:
    name: Check (tvOS device)
    runs-on: macos-15
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: rust-src
      - uses: Swatinem/rust-cache@v2
        with:
          key: tvos
      - run: cargo +nightly check -Z build-std --target aarch64-apple-tvos

  check-tvos-sim:
    name: Check (tvOS simulator)
    runs-on: macos-15
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: rust-src
      - uses: Swatinem/rust-cache@v2
        with:
          key: tvos-sim
      - run: cargo +nightly check -Z build-std --target aarch64-apple-tvos-sim