* remove enable cache * trigger CI * remove extra with paramters which I believe to be unecessary * try installing uv manuallly to avoid post install step * should be fixed by manually installing and not using the action
161 lines
5.0 KiB
YAML
161 lines
5.0 KiB
YAML
name: Lint Command
|
|
|
|
on:
|
|
issue_comment:
|
|
types: [created]
|
|
|
|
workflow_dispatch:
|
|
inputs:
|
|
pr_number:
|
|
description: 'PR number to run lint on'
|
|
required: true
|
|
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
issues: write
|
|
|
|
jobs:
|
|
lint-command:
|
|
name: Handle /lint command
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_dispatch' && github.event.inputs.pr_number) ||
|
|
(github.event_name == 'issue_comment' &&
|
|
github.event.issue.pull_request &&
|
|
contains(github.event.comment.body, '/lint') &&
|
|
startsWith(github.event.comment.body, '/lint'))
|
|
|
|
steps:
|
|
- name: Add acknowledgment reaction
|
|
if: github.event_name == 'issue_comment'
|
|
uses: peter-evans/create-or-update-comment@v4
|
|
with:
|
|
comment-id: ${{ github.event.comment.id }}
|
|
reactions: eyes
|
|
|
|
- name: Check permissions
|
|
if: github.event_name == 'issue_comment'
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const { data: collaborator } = await github.rest.repos.getCollaboratorPermissionLevel({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
username: context.actor
|
|
});
|
|
|
|
if (!['admin', 'write'].includes(collaborator.permission)) {
|
|
github.rest.issues.createComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: context.issue.number,
|
|
body: '❌ You need write permissions to run lint commands.'
|
|
});
|
|
core.setFailed('Insufficient permissions');
|
|
}
|
|
|
|
- name: Get PR information
|
|
id: pr
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const pr_number = context.eventName === 'issue_comment'
|
|
? context.issue.number
|
|
: ${{ github.event.inputs.pr_number || 'null' }};
|
|
|
|
const { data: pr } = await github.rest.pulls.get({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
pull_number: pr_number
|
|
});
|
|
|
|
core.setOutput('branch', pr.head.ref);
|
|
core.setOutput('repo', pr.head.repo.full_name);
|
|
core.setOutput('sha', pr.head.sha);
|
|
core.setOutput('number', pr_number);
|
|
|
|
- name: Checkout PR branch
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ steps.pr.outputs.branch }}
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
fetch-depth: 0
|
|
|
|
- name: Set up python 3.12
|
|
id: setup-python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: 3.12
|
|
|
|
- name: Install uv
|
|
run: |
|
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
|
|
|
- name: Install dependencies
|
|
run: uv sync --extra dev --extra postgres --extra external-tools
|
|
working-directory: .
|
|
|
|
# - name: Run ruff check with fixes
|
|
# run: uv run ruff check --fix .
|
|
#
|
|
# - name: Run ruff format
|
|
# run: uv run ruff format .
|
|
|
|
- name: Run isort, black, autoflake
|
|
run: uv run isort . --profile black && uv run black . && uv run autoflake --remove-all-unused-imports --remove-unused-variables --in-place --recursive --ignore-init-module-imports .
|
|
working-directory: .
|
|
|
|
|
|
- name: Check for changes
|
|
id: changes
|
|
run: |
|
|
if [[ -n $(git status --porcelain) ]]; then
|
|
echo "changes=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "changes=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Commit and push changes
|
|
if: steps.changes.outputs.changes == 'true'
|
|
run: |
|
|
git config --global user.name "github-actions[bot]"
|
|
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
git add .
|
|
git commit -m "style: lint / fmt
|
|
|
|
Triggered by /lint command from @${{ github.actor }}"
|
|
git push
|
|
|
|
- name: Comment on success
|
|
if: steps.changes.outputs.changes == 'true'
|
|
uses: peter-evans/create-or-update-comment@v4
|
|
with:
|
|
issue-number: ${{ steps.pr.outputs.number }}
|
|
body: |
|
|
✅ **Lint fixes applied successfully!**
|
|
|
|
Ruff has automatically fixed linting issues and formatted the code.
|
|
Changes have been committed to the PR branch.
|
|
|
|
- name: Comment on no changes
|
|
if: steps.changes.outputs.changes == 'false'
|
|
uses: peter-evans/create-or-update-comment@v4
|
|
with:
|
|
issue-number: ${{ steps.pr.outputs.number }}
|
|
body: |
|
|
✅ **No lint issues found!**
|
|
|
|
The code is already properly formatted and passes all linting checks.
|
|
|
|
- name: Comment on failure
|
|
if: failure()
|
|
uses: peter-evans/create-or-update-comment@v4
|
|
with:
|
|
issue-number: ${{ steps.pr.outputs.number }}
|
|
body: |
|
|
❌ **Lint command failed!**
|
|
|
|
There was an error while running the lint fixes. Please check the [workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details.
|