name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
env:
CARGO_TERM_COLOR: always
jobs:
pre-commit-checks:
name: "Cargo fmt, typos"
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v17
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Cargo fmt
run: |
nix develop -i -L .#nightly --command bash -c '
# Force use of Nix-provided rustfmt
export RUSTFMT=$(command -v rustfmt)
cargo fmt --check
'
- name: typos
run: nix develop -i -L --command typos
clippy:
name: "Clippy"
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v17
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Clippy
run: nix develop -i -L --command cargo clippy -- -D warnings
msrv-build:
name: "MSRV build"
runs-on: ubuntu-latest
timeout-minutes: 15
needs: [pre-commit-checks, clippy]
steps:
- name: checkout
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v17
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Build
run: nix develop -i -L .#msrv --command cargo build