-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
143 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
name: Assign on Comment | ||
|
||
on: | ||
|
||
issue_comment: | ||
|
||
types: | ||
|
||
- created | ||
|
||
|
||
|
||
jobs: | ||
|
||
assign: | ||
|
||
runs-on: ubuntu-latest | ||
|
||
|
||
|
||
steps: | ||
|
||
- name: Check if /assign command is present | ||
|
||
id: check_command | ||
|
||
uses: actions/github-script@v4 | ||
|
||
with: | ||
|
||
github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | ||
|
||
script: | | ||
const commentBody = context.payload.comment.body; | ||
const assignCommand = '/assign'; | ||
const isCommandPresent = commentBody.includes(assignCommand); | ||
console.log(`Command present: ${isCommandPresent}`); | ||
console.log(`Comment: ${commentBody}`); | ||
console.log(`Issue Number: ${context.payload.issue.number}`); | ||
console.log(`Issue State: ${context.payload.issue.state}`); | ||
console.log(`Assignees: ${context.payload.issue.assignees.map(assignee => assignee.login)}`); | ||
console.log(`Issue URL: ${context.payload.issue.html_url}`); | ||
console.log(`Comment URL: ${context.payload.comment.html_url}`); | ||
console.log(`Comment Author: ${context.payload.comment.user.login}`); | ||
console.log(`Repository: ${context.repo.owner}/${context.repo.repo}`); | ||
console.log(`Repository URL: ${context.payload.repository.html_url}`); | ||
console.log(`Repository Full Name: ${context.payload.repository.full_name}`); | ||
console.log(`Repository Name: ${context.payload.repository.name}`); | ||
console.log(`Repository Owner: ${context.payload.repository.owner.login}`); | ||
console.log(`Repository Owner URL: ${context.payload.repository.owner.html_url}`); | ||
console.log(`Event Name: ${context.eventName}`); | ||
const commentAuthor = context.payload.comment.user.login; | ||
core.setOutput('comment_author', commentAuthor); | ||
const isGreetingFromOwner = commentAuthor === context.payload.repository.owner.login; | ||
core.setOutput('is_greeting_from_owner', isGreetingFromOwner.toString()); | ||
const isAlreadyAssigned = context.payload.issue.assignees.length > 0; | ||
core.setOutput('is_already_assigned', isAlreadyAssigned.toString()); | ||
if (isCommandPresent && isGreetingFromOwner) { | ||
console.log('Skipping assigning issue: Greeting from repository owner.'); | ||
console.log(`::set-output name=assign_issue::false`); | ||
} else if (isCommandPresent && isAlreadyAssigned) { | ||
const { owner, repo, number } = context.issue; | ||
const assignees = context.payload.issue.assignees.map(assignee => assignee.login).join(', '); | ||
const commentBody = `Hey @${commentAuthor} ! , This issue is already assigned to @${assignees}. 💗 \n You can work on other issues 🚀 \n If there is anything wrong you can contact us on [Discord🕹️](https://discord.gg/fgwk4XZfxG)👀`; | ||
await github.issues.createComment({ owner, repo, issue_number: number, body: commentBody }); | ||
console.log(`Commented on the issue: ${commentBody}.`); | ||
console.log(`::set-output name=assign_issue::false`); | ||
} else if (isCommandPresent) { | ||
console.log(`::set-output name=assign_issue::true`); | ||
} else { | ||
console.log(`::set-output name=assign_issue::false`); | ||
} | ||
- name: Assign the issue | ||
|
||
if: steps.check_command.outputs.assign_issue == 'true' | ||
|
||
id: assign_issue | ||
|
||
uses: actions/github-script@v4 | ||
|
||
with: | ||
|
||
github-token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | ||
|
||
script: | | ||
const { owner, repo, number } = context.issue; | ||
const assignee = context.payload.comment.user.login; | ||
await github.issues.addAssignees({ owner, repo, issue_number: number, assignees: [assignee] }); | ||
console.log(`Assigned the issue to ${assignee}.`); |