trellis-runner 0.4.0

Calculation runner
Documentation
name: CI

on:
  pull_request:
  push:
    branches:
      - main

env:
  CARGO_TERM_COLOR: always

jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: Swatinem/rust-cache@v2

      - uses: dtolnay/rust-toolchain@stable

      - name: Install system deps (if needed)
        run: |
          sudo apt-get update

      - name: Test (default features)
        run: cargo test --verbose

      - name: Dry-run publish check
        run: cargo publish --dry-run

  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: Swatinem/rust-cache@v2

      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy

      - name: Clippy
        run: cargo clippy --all-targets -- -D warnings

  rustfmt:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: Swatinem/rust-cache@v2

      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt

      - name: Format check
        run: cargo fmt --all -- --check

  docs-build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: Swatinem/rust-cache@v2

      - uses: dtolnay/rust-toolchain@stable

      - name: Install system deps (if needed)
        run: |
          sudo apt-get update
          sudo apt-get install pkg-config
          sudo apt-get install libfontconfig1-dev

      - name: Build docs
        run: RUSTDOCFLAGS="-D warnings" cargo doc --all-features --no-deps

  readme:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: Swatinem/rust-cache@v2

      - uses: dtolnay/rust-toolchain@stable

      - name: Install cargo-readme
        run: cargo install cargo-readme

      - name: Generate README
        run: cargo readme > README.md

      - name: Ensure README is up to date
        run: git diff --exit-code README.md

  cargo-deny:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        checks:
          - advisories
          - bans
          - licenses
          - sources

    continue-on-error: ${{ matrix.checks == 'advisories' }}

    steps:
      - uses: actions/checkout@v4

      - uses: EmbarkStudios/cargo-deny-action@v1
        with:
          command: check ${{ matrix.checks }}

  msrv:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@1.85

      - run: cargo check