MCP Client Session Management Compatibility Issue #45
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |