name: Lint
permissions:
  contents: read

on:
  pull_request:
  push:
    branches:
      - main

env:
  CARGO_TERM_COLOR: always

jobs:
  clippy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Setup Rust cache
        uses: ./.github/workflows/setup-rust-cache

      - name: Clippy
        run: cargo clippy -- -Dwarnings

  format:
    runs-on: ubuntu-latest
    env:
      NIGHTLY_VERSION: nightly-2025-09-01
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Install formatting dependencies
        uses: ./.github/workflows/apt-get-install
        with:
          packages: gettext yapf3

      - name: Install pinned nightly for rustfmt
        run: |
          rustup toolchain install --profile minimal "$NIGHTLY_VERSION"
          rustup component add rustfmt --toolchain "$NIGHTLY_VERSION"

      - name: Check formatting
        uses: dprint/check@v2.3

  typos:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Check for typos
        uses: crate-ci/typos@v1.42.3
        with:
          config: ./.github/typos.toml
