# 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:

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

    steps:
      - name: Checkout repository
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

      - name: Install Rust
        uses: dtolnay/rust-toolchain@56f84321dbccf38fb67ce29ab63e4754056677e0 # master (rust 1.85.1)
        with:
          # We use nightly so that `fmt` correctly groups together imports, and
          # clippy correctly fixes up the benchmarks.
          toolchain: nightly-2022-12-01
          components: clippy, rustfmt
      - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8

      - name: Setup Poetry
        uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
        with:
          install-project: "false"
          poetry-version: "2.1.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@e348103e9026cc0eee72ae06630dbe30c8bf7a79 # v5.1.0
        with:
          commit_message: "Attempt to fix linting"
