name: Workspace

on:
  pull_request:
    paths-ignore:
      - README.md
  push:
    branches: master
    paths-ignore:
      - README.md

# Cancels CI jobs when new commits are pushed to a PR branch
concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: RustCrypto/actions/cargo-cache@master
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: 1.85.0
          components: clippy
      - run: cargo clippy --all -- -D warnings

  rustfmt:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v5

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

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

  typos:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: crate-ci/typos@v1
