cmd2 3.0.0 Discussion #50
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: "🔀 Gemini Dispatch" | |
| on: | |
| pull_request_review_comment: | |
| types: | |
| - "created" | |
| pull_request_review: | |
| types: | |
| - "submitted" | |
| pull_request: | |
| types: | |
| - "opened" | |
| issues: | |
| types: | |
| - "opened" | |
| - "reopened" | |
| issue_comment: | |
| types: | |
| - "created" | |
| defaults: | |
| run: | |
| shell: "bash" | |
| jobs: | |
| debugger: | |
| if: |- | |
| ${{ fromJSON(vars.DEBUG || vars.ACTIONS_STEP_DEBUG || false) }} | |
| runs-on: "ubuntu-latest" | |
| permissions: | |
| contents: "read" | |
| steps: | |
| - name: "Print context for debugging" | |
| env: | |
| DEBUG_event_name: "${{ github.event_name }}" | |
| DEBUG_event__action: "${{ github.event.action }}" | |
| DEBUG_event__comment__author_association: "${{ github.event.comment.author_association }}" | |
| DEBUG_event__issue__author_association: "${{ github.event.issue.author_association }}" | |
| DEBUG_event__pull_request__author_association: | |
| "${{ github.event.pull_request.author_association }}" | |
| DEBUG_event__review__author_association: "${{ github.event.review.author_association }}" | |
| DEBUG_event: "${{ toJSON(github.event) }}" | |
| run: |- | |
| env | grep '^DEBUG_' | |
| dispatch: | |
| # For PRs: only if not from a fork | |
| # For comments: only if user types @gemini-cli and is OWNER/MEMBER/COLLABORATOR | |
| # For issues: only on open/reopen | |
| if: |- | |
| ( | |
| github.event_name == 'pull_request' && | |
| github.event.pull_request.head.repo.fork == false | |
| ) || ( | |
| github.event.sender.type == 'User' && | |
| startsWith(github.event.comment.body || github.event.review.body || github.event.issue.body, '@gemini-cli') && | |
| contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association || github.event.review.author_association || github.event.issue.author_association) | |
| ) || ( | |
| github.event_name == 'issues' && | |
| contains(fromJSON('["opened", "reopened"]'), github.event.action) | |
| ) | |
| runs-on: "ubuntu-latest" | |
| permissions: | |
| contents: "read" | |
| issues: "write" | |
| pull-requests: "write" | |
| outputs: | |
| command: "${{ steps.extract_command.outputs.command }}" | |
| request: "${{ steps.extract_command.outputs.request }}" | |
| additional_context: "${{ steps.extract_command.outputs.additional_context }}" | |
| issue_number: "${{ github.event.pull_request.number || github.event.issue.number }}" | |
| steps: | |
| - name: "Mint identity token" | |
| id: "mint_identity_token" | |
| if: |- | |
| ${{ vars.APP_ID }} | |
| uses: "actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42" # ratchet:actions/create-github-app-token@v2 | |
| with: | |
| app-id: "${{ vars.APP_ID }}" | |
| private-key: "${{ secrets.APP_PRIVATE_KEY }}" | |
| permission-contents: "read" | |
| permission-issues: "write" | |
| permission-pull-requests: "write" | |
| - name: "Extract command" | |
| id: "extract_command" | |
| uses: "actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd" # ratchet:actions/github-script@v7 | |
| env: | |
| EVENT_TYPE: "${{ github.event_name }}.${{ github.event.action }}" | |
| REQUEST: | |
| "${{ github.event.comment.body || github.event.review.body || github.event.issue.body }}" | |
| with: | |
| script: | | |
| const request = process.env.REQUEST; | |
| const eventType = process.env.EVENT_TYPE | |
| core.setOutput('request', request); | |
| if (request.startsWith("@gemini-cli /review")) { | |
| core.setOutput('command', 'review'); | |
| const additionalContext = request.replace(/^@gemini-cli \/review/, '').trim(); | |
| core.setOutput('additional_context', additionalContext); | |
| } else if (request.startsWith("@gemini-cli /triage")) { | |
| core.setOutput('command', 'triage'); | |
| } else if (request.startsWith("@gemini-cli")) { | |
| core.setOutput('command', 'invoke'); | |
| const additionalContext = request.replace(/^@gemini-cli/, '').trim(); | |
| core.setOutput('additional_context', additionalContext); | |
| } else if (eventType === 'pull_request.opened') { | |
| core.setOutput('command', 'review'); | |
| } else if (['issues.opened', 'issues.reopened'].includes(eventType)) { | |
| core.setOutput('command', 'triage'); | |
| } else { | |
| core.setOutput('command', 'fallthrough'); | |
| } | |
| - name: "Acknowledge request" | |
| env: | |
| GITHUB_TOKEN: | |
| "${{ steps.mint_identity_token.outputs.token || secrets.GITHUB_TOKEN || github.token }}" | |
| ISSUE_NUMBER: "${{ github.event.pull_request.number || github.event.issue.number }}" | |
| MESSAGE: |- | |
| 🤖 Hi @${{ github.actor }}, I've received your request, and I'm working on it now! You can track my progress [in the logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for more details. | |
| REPOSITORY: "${{ github.repository }}" | |
| run: |- | |
| gh issue comment "${ISSUE_NUMBER}" \ | |
| --body "${MESSAGE}" \ | |
| --repo "${REPOSITORY}" | |
| review: | |
| needs: "dispatch" | |
| if: |- | |
| ${{ needs.dispatch.outputs.command == 'review' }} | |
| uses: "./.github/workflows/gemini-review.yml" | |
| permissions: | |
| contents: "read" | |
| id-token: "write" | |
| issues: "write" | |
| pull-requests: "write" | |
| with: | |
| additional_context: "${{ needs.dispatch.outputs.additional_context }}" | |
| secrets: "inherit" | |
| triage: | |
| needs: "dispatch" | |
| if: |- | |
| ${{ needs.dispatch.outputs.command == 'triage' }} | |
| uses: "./.github/workflows/gemini-triage.yml" | |
| permissions: | |
| contents: "read" | |
| id-token: "write" | |
| issues: "write" | |
| pull-requests: "write" | |
| with: | |
| additional_context: "${{ needs.dispatch.outputs.additional_context }}" | |
| secrets: "inherit" | |
| invoke: | |
| needs: "dispatch" | |
| if: |- | |
| ${{ needs.dispatch.outputs.command == 'invoke' }} | |
| uses: "./.github/workflows/gemini-invoke.yml" | |
| permissions: | |
| contents: "read" | |
| id-token: "write" | |
| issues: "write" | |
| pull-requests: "write" | |
| with: | |
| additional_context: "${{ needs.dispatch.outputs.additional_context }}" | |
| secrets: "inherit" | |
| fallthrough: | |
| needs: | |
| - "dispatch" | |
| - "review" | |
| - "triage" | |
| - "invoke" | |
| if: |- | |
| ${{ always() && !cancelled() && (failure() || needs.dispatch.outputs.command == 'fallthrough') }} | |
| runs-on: "ubuntu-latest" | |
| permissions: | |
| contents: "read" | |
| issues: "write" | |
| pull-requests: "write" | |
| steps: | |
| - name: "Mint identity token" | |
| id: "mint_identity_token" | |
| if: |- | |
| ${{ vars.APP_ID }} | |
| uses: "actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42" # ratchet:actions/create-github-app-token@v2 | |
| with: | |
| app-id: "${{ vars.APP_ID }}" | |
| private-key: "${{ secrets.APP_PRIVATE_KEY }}" | |
| permission-contents: "read" | |
| permission-issues: "write" | |
| permission-pull-requests: "write" | |
| - name: "Send failure comment" | |
| env: | |
| GITHUB_TOKEN: | |
| "${{ steps.mint_identity_token.outputs.token || secrets.GITHUB_TOKEN || github.token }}" | |
| ISSUE_NUMBER: "${{ github.event.pull_request.number || github.event.issue.number }}" | |
| MESSAGE: |- | |
| 🤖 I'm sorry @${{ github.actor }}, but I was unable to process your request. Please [see the logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for more details. | |
| REPOSITORY: "${{ github.repository }}" | |
| run: |- | |
| gh issue comment "${ISSUE_NUMBER}" \ | |
| --body "${MESSAGE}" \ | |
| --repo "${REPOSITORY}" |