name: Slash Command Dispatch
|
on:
|
issue_comment:
|
types: [created]
|
|
env:
|
pull_request_commands_list: |
|
help
|
frontend
|
ff
|
git
|
jira
|
docker
|
fm
|
fmt
|
|
issue_commands_list: |
|
help
|
jira
|
|
jobs:
|
slashCommandDispatch:
|
if: startsWith(github.event.comment.body, '/')
|
timeout-minutes: 1
|
runs-on: ubuntu-latest
|
steps:
|
- uses: hmarr/debug-action@v3.0.0
|
|
- name: "React to comment"
|
uses: peter-evans/create-or-update-comment@v5
|
with:
|
token: ${{ secrets.GIT_PAT }}
|
comment-id: ${{ github.event.comment.id }}
|
reactions: eyes
|
|
- name: "Validate command"
|
id: determine_command
|
uses: actions/github-script@v8
|
env:
|
COMMANDS_LIST: ${{ github.event.issue.pull_request && env.pull_request_commands_list || env.issue_commands_list }}
|
with:
|
github-token: ${{ secrets.GIT_PAT }}
|
script: |
|
const body = context.payload.comment.body.toLowerCase().trim();
|
const commands_list = process.env.COMMANDS_LIST.split("\n");
|
console.log(commands_list);
|
const command = body.replace(/^\/+/, '').split(/\s+/)[0];
|
core.setOutput('command', command);
|
core.setOutput('command-state', commands_list.includes(command) ? 'known' : 'unknown');
|
|
- name: "Slash Command Dispatch"
|
id: scd_issues
|
if: steps.determine_command.outputs.command-state == 'known'
|
uses: peter-evans/slash-command-dispatch@v5
|
with:
|
token: ${{ secrets.GIT_PAT }}
|
reaction-token: ${{ secrets.GIT_PAT }}
|
issue-type: ${{ github.event.issue.pull_request && 'pull-request' || 'issue' }}
|
reactions: true
|
commands: ${{ github.event.issue.pull_request && env.pull_request_commands_list || env.issue_commands_list }}
|
|
- name: "Edit comment with error message"
|
if: steps.determine_command.outputs.command-state != 'known'
|
uses: peter-evans/create-or-update-comment@v5
|
with:
|
token: ${{ secrets.GIT_PAT }}
|
comment-id: ${{ github.event.comment.id }}
|
body: |
|
> '/${{ steps.determine_command.outputs.command }}' is an unknown ${{ github.event.issue.pull_request && 'pull-request' || 'issue' }} command.
|
> See '/help'
|
reactions: confused
|