name: Lint

on: [pull_request]

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  fmt:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
        with:
          toolchain: nightly
          components: rustfmt

      - name: Rustfmt Check
        run: cargo fmt --all -- --check

  clippy:
    permissions:
      contents: write

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
        with: { components: clippy }

      - uses: giraffate/clippy-action@v1.0.1
        with:
          reporter: 'github-pr-check'
          github_token: ${{ secrets.GITHUB_TOKEN }}
          clippy_flags: --workspace --all-features --tests --examples --bins -- -Dclippy::todo -Aunknown_lints