name: ruff auto-format on: pull_request: branches: [ master ] paths-ignore: - 'web/**' - 'doc/**' - '**.md' workflow_dispatch: # allow manual trigger permissions: contents: write jobs: ruff-format: # only run on dependabot PRs or manual trigger if: github.actor == 'dependabot[bot]' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-22.04 steps: - name: Checkout repository uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: ${{ github.head_ref }} # need a token with write access to push the commit token: ${{ secrets.GITHUB_TOKEN }} - name: Set up Python 3.13 uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: "3.13" - name: Install dependencies run: | pip install -r requirements.txt pip install -e .[dev,scripts] - name: Run ruff check --fix/continue # ruff returns non-zero error code after formatting, which is what we expect continue-on-error: true run: pre-commit run ruff --all-files - name: Run ruff format/continue # ruff format returns non-zero error code after formatting, which is what we expect continue-on-error: true run: pre-commit run ruff-format --all-files - name: Check for changes id: changes run: | if git diff --quiet; then echo "has_changes=false" >> "$GITHUB_OUTPUT" else echo "has_changes=true" >> "$GITHUB_OUTPUT" fi - name: Commit and push formatting changes if: steps.changes.outputs.has_changes == 'true' run: | git config user.name "${GITHUB_ACTOR}" git config user.email "${GITHUB_ACTOR_ID}+${GITHUB_ACTOR}@users.noreply.github.com" git add -A git commit -m "style: auto-format with ruff" git push