# A helper workflow to automatically fixup any linting errors on a PR. Must be
# triggered manually.

name: Attempt to automatically fix linting errors

on:
  workflow_dispatch:

env:
  # We use nightly so that `fmt` correctly groups together imports, and
  # clippy correctly fixes up the benchmarks.
  RUST_VERSION: nightly-2025-06-24

jobs:
  fixup:
    name: Fix up
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - name: Install Rust
        uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
        with:
          toolchain: ${{ env.RUST_VERSION }}
          components: clippy, rustfmt
      - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Setup Poetry
        uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
        with:
          install-project: "false"
          poetry-version: "2.2.1"

      - name: Run ruff check
        continue-on-error: true
        run: poetry run ruff check --fix .

      - name: Run ruff format
        continue-on-error: true
        run: poetry run ruff format --quiet .

      - run: cargo clippy --all-features --fix -- -D warnings
        continue-on-error: true

      - run: cargo fmt
        continue-on-error: true

      - uses: stefanzweifel/git-auto-commit-action@04702edda442b2e678b25b537cec683a1493fcb9 # v7.1.0
        with:
          commit_message: "Attempt to fix linting"
