modulino 0.3.0

A hardware-agnostic, no_std Rust driver for Arduino Modulino breakout boards
Documentation
name: Continuous Integration

on:
  push:
    branches:
      - main
    paths-ignore:
      - "**/README.md"
  pull_request:
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

jobs:
  rust-checks:
    name: Rust Checks
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        action:
          - command: check
            args: --all-targets
          - command: test
            args: --workspace
          - command: fmt
            args: --all -- --check
          - command: clippy
            args: --all-features --workspace -- -D warnings
          - command: doc
            args: --no-deps --all-features
    steps:
      - name: Checkout repository
        uses: actions/checkout@v5
      - name: Setup Rust
        uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: stable
          components: rust-src, rustfmt, clippy
      - name: Enable caching
        uses: Swatinem/rust-cache@v2
      - name: Run command
        run: cargo ${{ matrix.action.command }} ${{ matrix.action.args }}

  build-targets:
    name: Build for Targets
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        target:
          - riscv32imac-unknown-none-elf    # ESP32-C3/C6
          - thumbv6m-none-eabi             # RP2040 (Cortex-M0+)
          - thumbv7em-none-eabihf          # STM32/Cortex-M4F
    steps:
      - name: Checkout repository
        uses: actions/checkout@v5
      - name: Setup Rust
        uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: stable
          targets: ${{ matrix.target }}
      - name: Enable caching
        uses: Swatinem/rust-cache@v2
      - name: Build library
        run: cargo check --target ${{ matrix.target }}

  security_audit:
    name: Security Audit
    runs-on: ubuntu-latest
    permissions:
      checks: write
    steps:
      - uses: actions/checkout@v5
      - uses: rustsec/audit-check@v2.0.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}