name: Continuous Integration
env:
CARGO_TERM_COLOR: always
on:
push:
pull_request:
jobs:
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- name: Check format
run: cargo fmt --check
unused-dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- name: Install cargo-machete
uses: taiki-e/install-action@v2
with:
tool: cargo-machete
- name: Check for unused dependencies
run: cargo machete
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@1.85
- name: Check MSRV
run: cargo check --all-features
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- name: Check for clippy warnings
run: cargo clippy --all-targets --all-features --color always -- -D warnings
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- name: Run tests
run: cargo test --verbose
build:
runs-on: ubuntu-latest
strategy:
matrix:
features:
- ""
- "scd41"
- "defmt"
- "thiserror"
- "embedded-hal-async"
- "scd41,embedded-hal-async"
- "scd41,defmt"
- "util"
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Build (${{ matrix.features || 'default' }})
run: cargo build --verbose ${{ matrix.features && format('--features "{0}"', matrix.features) || '' }}