Skip to content

Apply lint to contributor PR on demand #1280

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Nov 13, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 57 additions & 7 deletions .github/workflows/ruff_linter.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
name: Code Analysis with Ruff

on:
workflow_dispatch:
inputs:
pr_url:
description: 'URL of the PR to fix'
required: true
type: string
push:
branches:
- main
Expand All @@ -13,30 +19,74 @@ on:
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write

strategy:
matrix:
python-version: ["3.9"]
steps:
- name: Extract PR info
if: github.event_name == 'workflow_dispatch'
run: |
PR_URL=${{ github.event.inputs.pr_url }}
PR_NUMBER=$(echo $PR_URL | grep -oE '[0-9]+$')
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV

- uses: actions/checkout@v3
if: github.event_name == 'workflow_dispatch'
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

- name: Checkout PR branch
if: github.event_name == 'workflow_dispatch'
run: |
gh pr checkout ${{ env.PR_NUMBER }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- uses: actions/checkout@v3
if: github.event_name != 'workflow_dispatch'
with:
fetch-depth: 0

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ruff==0.6.8
- name: Analyzing the code with ruff

- name: Regular lint check
if: github.event_name != 'workflow_dispatch'
run: |
ruff check .
- name: Check *all* Python files for F821, F823, and W191
run: |
# --isolated is used to skip the allowlist at all so this applies to all files
# please be careful when using this large changes means everyone needs to rebase
ruff check --isolated --select F821,F823,W191
- name: Check the allow-listed files for F,I
run: |
ruff check --select F,I
- name: Check the allow-listed files for well formatted code
run: |
ruff format --check

- name: Apply fixes to PR
if: github.event_name == 'workflow_dispatch'
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'

# Apply fixes
ruff check --select F,I --fix
ruff format .

# Commit and push if there are changes
if [[ -n "$(git status --porcelain)" ]]; then
git add .
git commit -m "Apply automatic Ruff fixes"
git push
else
echo "No fixes needed!"
fi
Loading