-
Notifications
You must be signed in to change notification settings - Fork 790
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update review process for bot to modify labels and leave comments on …
…issue, based on issue status and validity
- Loading branch information
1 parent
68f8843
commit dca693d
Showing
4 changed files
with
248 additions
and
5 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 |
---|---|---|
|
@@ -21,11 +21,85 @@ func (r *Reviewer) Review() { | |
|
||
r.application.Parse(r.gitHub.Issue) | ||
|
||
if isTestingIssue() { | ||
if r.application.IsValid() { | ||
debugMessage("Application has no problems") | ||
} else { | ||
debugMessage("Application problems:", r.renderProblems()) | ||
status := r.getStatus() | ||
|
||
r.updateLabels(status) | ||
r.createComment(status) | ||
} | ||
|
||
func (r *Reviewer) getStatus() string { | ||
if *r.gitHub.Issue.State == "closed" { | ||
return "closed" | ||
} else if r.gitHub.IssueHasLabel(LabelStatusApproved) { | ||
return "approved" | ||
} else if r.gitHub.IssueHasLabel(LabelStatusReviewing) { | ||
return "reviewing" | ||
} else if r.gitHub.IssueHasLabel(LabelStatusInvalid) { | ||
return "invalid" | ||
} else { | ||
return "new" | ||
} | ||
} | ||
|
||
func (r *Reviewer) createComment(status string) { | ||
title := "" | ||
body := "" | ||
details := fmt.Sprintf("<details>\n<summary>Application data...</summary>\n\n```json\n%s\n```\n</details>", r.application.GetData()) | ||
|
||
if status == "closed" { | ||
body = "Oops! This application is closed can no longer be processed. If this is an error, please reach out to [[email protected]](mailto:[email protected])." | ||
} else if status == "approved" { | ||
body = "Oops! This application has been updated but has already been approved and can no longer be processed. If this is an error, please reach out to [[email protected]](mailto:[email protected])." | ||
} else if status == "reviewing" && r.application.IsValid() { | ||
title = "### 👍 Application still valid" | ||
body = fmt.Sprintf("\n\n%s\n\nWe've processed your updated application and everything still looks good.", details) | ||
} else if r.application.IsValid() { | ||
title = "### ✅ Your application is valid" | ||
body = fmt.Sprintf("\n\n%s\n\nThanks for applying! Next step: our team will review your application and may have follow-up questions. You can still make changes to your application and we'll process it again.", details) | ||
} else { | ||
title = "### ❌ Your application needs some work" | ||
body = fmt.Sprintf("\n\n%s\n\nThe following issues need to be addressed:\n\n%s", details, r.renderProblems()) | ||
} | ||
|
||
r.gitHub.CreateIssueComment(fmt.Sprintf("%s%s", title, body)) | ||
} | ||
|
||
func (r *Reviewer) updateLabels(status string) { | ||
if status == "approved" || status == "closed" { | ||
return | ||
} | ||
|
||
if status == "invalid" && r.application.IsValid() { | ||
if err := r.gitHub.RemoveIssueLabel(LabelStatusInvalid); err != nil { | ||
r.printErrorAndExit( | ||
fmt.Errorf("could not remove issue label '%s': %s", LabelStatusInvalid, err.Error()), | ||
) | ||
} | ||
} | ||
|
||
if r.application.IsValid() { | ||
if status != "reviewing" { | ||
if err := r.gitHub.AddIssueLabel(LabelStatusReviewing); err != nil { | ||
r.printErrorAndExit( | ||
fmt.Errorf("could not add issue label '%s': %s", LabelStatusReviewing, err.Error()), | ||
) | ||
} | ||
} | ||
} else { | ||
if status != "invalid" { | ||
if err := r.gitHub.AddIssueLabel(LabelStatusInvalid); err != nil { | ||
r.printErrorAndExit( | ||
fmt.Errorf("could not add issue label '%s': %s", LabelStatusInvalid, err.Error()), | ||
) | ||
} | ||
} | ||
|
||
if status == "reviewing" { | ||
if err := r.gitHub.RemoveIssueLabel(LabelStatusReviewing); err != nil { | ||
r.printErrorAndExit( | ||
fmt.Errorf("could not remove issue label '%s': %s", LabelStatusReviewing, err.Error()), | ||
) | ||
} | ||
} | ||
} | ||
} | ||
|
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,60 @@ | ||
{ | ||
"id": 1801650328, | ||
"number": 6, | ||
"state": "open", | ||
"locked": false, | ||
"title": "Application for TestDB", | ||
"body": "### Account URL\n\ntestdb.1password.com\n\n### Non-commercial confirmation\n\n- [X] No, this account won't be used for commercial activity\n\n### Team application\n\n- [ ] Yes, this application is for a team\n\n### Event application\n\n- [ ] Yes, this application is for an event\n\n### Project name\n\nTestDB\n\n### Short description\n\nTestDB is a free and open source, community-based forum software project.\n\n### Number of team members/core contributors\n\n1\n\n### Homepage URL\n\nhttps://github.com/wendyappleed/test-db\n\n### Repository URL\n\nhttps://github.com/wendyappleed/test-db\n\n### License type\n\nMIT\n\n### License URL\n\nhttps://github.com/wendyappleed/test-db/blob/main/LICENSE.md\n\n### Age confirmation\n\n- [X] Yes, this project is at least 30 days old\n\n### Name\n\nWendy Appleseed\n\n### Email\n\[email protected]\n\n### Project role\n\nCore Maintainer\n\n### Profile or website\n\nhttps://github.com/wendyappleseed/\n\n### Can we contact you?\n\n- [X] Yes, you may contact me\n\n### Additional comments\n\nThank you!", | ||
"user": { | ||
"login": "wendyappleseed", | ||
"id": 38230737, | ||
"node_id": "MDQ6VXNlcjYzOTIwNDk=", | ||
"avatar_url": "https://avatars.githubusercontent.com/u/38230737?v=4", | ||
"html_url": "https://github.com/wendyappleseed", | ||
"gravatar_id": "", | ||
"type": "User", | ||
"site_admin": false, | ||
"url": "https://api.github.com/users/wendyappleseed", | ||
"events_url": "https://api.github.com/users/wendyappleseed/events{/privacy}", | ||
"following_url": "https://api.github.com/users/wendyappleseed/following{/other_user}", | ||
"followers_url": "https://api.github.com/users/wendyappleseed/followers", | ||
"gists_url": "https://api.github.com/users/wendyappleseed/gists{/gist_id}", | ||
"organizations_url": "https://api.github.com/users/wendyappleseed/orgs", | ||
"received_events_url": "https://api.github.com/users/wendyappleseed/received_events", | ||
"repos_url": "https://api.github.com/users/wendyappleseed/repos", | ||
"starred_url": "https://api.github.com/users/wendyappleseed/starred{/owner}{/repo}", | ||
"subscriptions_url": "https://api.github.com/users/wendyappleseed/subscriptions" | ||
}, | ||
"labels": [ | ||
{ | ||
"id": 5728067083, | ||
"url": "https://api.github.com/repos/1Password/1password-teams-open-source/labels/status:%20approved", | ||
"name": "status: approved", | ||
"color": "0052CC", | ||
"description": "The application has been approved", | ||
"default": false, | ||
"node_id": "LA_kwDOJ6JE6M8AAAABVWteCw" | ||
} | ||
], | ||
"comments": 11, | ||
"closed_at": "2023-07-13T05:03:51Z", | ||
"created_at": "2023-07-12T19:49:35Z", | ||
"updated_at": "2023-07-13T05:03:51Z", | ||
"url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6", | ||
"html_url": "https://github.com/wendyappleseed/1password-teams-open-source/issues/6", | ||
"comments_url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/comments", | ||
"events_url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/events", | ||
"labels_url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/labels{/name}", | ||
"repository_url": "https://api.github.com/repos/1Password/1password-teams-open-source", | ||
"reactions": { | ||
"total_count": 0, | ||
"+1": 0, | ||
"-1": 0, | ||
"laugh": 0, | ||
"confused": 0, | ||
"heart": 0, | ||
"hooray": 0, | ||
"url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/reactions" | ||
}, | ||
"node_id": "I_kwDOJ6JE6M5rYwCY" | ||
} |
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,49 @@ | ||
{ | ||
"id": 1801650328, | ||
"number": 6, | ||
"state": "closed", | ||
"locked": false, | ||
"title": "Application for TestDB", | ||
"body": "### Account URL\n\ntestdb.1password.com\n\n### Non-commercial confirmation\n\n- [X] No, this account won't be used for commercial activity\n\n### Team application\n\n- [ ] Yes, this application is for a team\n\n### Event application\n\n- [ ] Yes, this application is for an event\n\n### Project name\n\nTestDB\n\n### Short description\n\nTestDB is a free and open source, community-based forum software project.\n\n### Number of team members/core contributors\n\n1\n\n### Homepage URL\n\nhttps://github.com/wendyappleed/test-db\n\n### Repository URL\n\nhttps://github.com/wendyappleed/test-db\n\n### License type\n\nMIT\n\n### License URL\n\nhttps://github.com/wendyappleed/test-db/blob/main/LICENSE.md\n\n### Age confirmation\n\n- [X] Yes, this project is at least 30 days old\n\n### Name\n\nWendy Appleseed\n\n### Email\n\[email protected]\n\n### Project role\n\nCore Maintainer\n\n### Profile or website\n\nhttps://github.com/wendyappleseed/\n\n### Can we contact you?\n\n- [X] Yes, you may contact me\n\n### Additional comments\n\nThank you!", | ||
"user": { | ||
"login": "wendyappleseed", | ||
"id": 38230737, | ||
"node_id": "MDQ6VXNlcjYzOTIwNDk=", | ||
"avatar_url": "https://avatars.githubusercontent.com/u/38230737?v=4", | ||
"html_url": "https://github.com/wendyappleseed", | ||
"gravatar_id": "", | ||
"type": "User", | ||
"site_admin": false, | ||
"url": "https://api.github.com/users/wendyappleseed", | ||
"events_url": "https://api.github.com/users/wendyappleseed/events{/privacy}", | ||
"following_url": "https://api.github.com/users/wendyappleseed/following{/other_user}", | ||
"followers_url": "https://api.github.com/users/wendyappleseed/followers", | ||
"gists_url": "https://api.github.com/users/wendyappleseed/gists{/gist_id}", | ||
"organizations_url": "https://api.github.com/users/wendyappleseed/orgs", | ||
"received_events_url": "https://api.github.com/users/wendyappleseed/received_events", | ||
"repos_url": "https://api.github.com/users/wendyappleseed/repos", | ||
"starred_url": "https://api.github.com/users/wendyappleseed/starred{/owner}{/repo}", | ||
"subscriptions_url": "https://api.github.com/users/wendyappleseed/subscriptions" | ||
}, | ||
"comments": 11, | ||
"closed_at": "2023-07-13T05:03:51Z", | ||
"created_at": "2023-07-12T19:49:35Z", | ||
"updated_at": "2023-07-13T05:03:51Z", | ||
"url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6", | ||
"html_url": "https://github.com/wendyappleseed/1password-teams-open-source/issues/6", | ||
"comments_url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/comments", | ||
"events_url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/events", | ||
"labels_url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/labels{/name}", | ||
"repository_url": "https://api.github.com/repos/1Password/1password-teams-open-source", | ||
"reactions": { | ||
"total_count": 0, | ||
"+1": 0, | ||
"-1": 0, | ||
"laugh": 0, | ||
"confused": 0, | ||
"heart": 0, | ||
"hooray": 0, | ||
"url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/reactions" | ||
}, | ||
"node_id": "I_kwDOJ6JE6M5rYwCY" | ||
} |
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,60 @@ | ||
{ | ||
"id": 1801650328, | ||
"number": 6, | ||
"state": "open", | ||
"locked": false, | ||
"title": "Application for TestDB", | ||
"body": "### Account URL\n\ntestdb.1password.com\n\n### Non-commercial confirmation\n\n- [X] No, this account won't be used for commercial activity\n\n### Team application\n\n- [ ] Yes, this application is for a team\n\n### Event application\n\n- [ ] Yes, this application is for an event\n\n### Project name\n\nTestDB\n\n### Short description\n\nTestDB is a free and open source, community-based forum software project.\n\n### Number of team members/core contributors\n\n1\n\n### Homepage URL\n\nhttps://github.com/wendyappleed/test-db\n\n### Repository URL\n\nhttps://github.com/wendyappleed/test-db\n\n### License type\n\nMIT\n\n### License URL\n\nhttps://github.com/wendyappleed/test-db/blob/main/LICENSE.md\n\n### Age confirmation\n\n- [X] Yes, this project is at least 30 days old\n\n### Name\n\nWendy Appleseed\n\n### Email\n\[email protected]\n\n### Project role\n\nCore Maintainer\n\n### Profile or website\n\nhttps://github.com/wendyappleseed/\n\n### Can we contact you?\n\n- [X] Yes, you may contact me\n\n### Additional comments\n\nThank you!", | ||
"user": { | ||
"login": "wendyappleseed", | ||
"id": 38230737, | ||
"node_id": "MDQ6VXNlcjYzOTIwNDk=", | ||
"avatar_url": "https://avatars.githubusercontent.com/u/38230737?v=4", | ||
"html_url": "https://github.com/wendyappleseed", | ||
"gravatar_id": "", | ||
"type": "User", | ||
"site_admin": false, | ||
"url": "https://api.github.com/users/wendyappleseed", | ||
"events_url": "https://api.github.com/users/wendyappleseed/events{/privacy}", | ||
"following_url": "https://api.github.com/users/wendyappleseed/following{/other_user}", | ||
"followers_url": "https://api.github.com/users/wendyappleseed/followers", | ||
"gists_url": "https://api.github.com/users/wendyappleseed/gists{/gist_id}", | ||
"organizations_url": "https://api.github.com/users/wendyappleseed/orgs", | ||
"received_events_url": "https://api.github.com/users/wendyappleseed/received_events", | ||
"repos_url": "https://api.github.com/users/wendyappleseed/repos", | ||
"starred_url": "https://api.github.com/users/wendyappleseed/starred{/owner}{/repo}", | ||
"subscriptions_url": "https://api.github.com/users/wendyappleseed/subscriptions" | ||
}, | ||
"labels": [ | ||
{ | ||
"id": 5728067083, | ||
"url": "https://api.github.com/repos/1Password/1password-teams-open-source/labels/status:%20reviewing", | ||
"name": "status: reviewing", | ||
"color": "0052CC", | ||
"description": "The application is being reviewed", | ||
"default": false, | ||
"node_id": "LA_kwDOJ6JE6M8AAAABVWteCw" | ||
} | ||
], | ||
"comments": 11, | ||
"closed_at": "2023-07-13T05:03:51Z", | ||
"created_at": "2023-07-12T19:49:35Z", | ||
"updated_at": "2023-07-13T05:03:51Z", | ||
"url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6", | ||
"html_url": "https://github.com/wendyappleseed/1password-teams-open-source/issues/6", | ||
"comments_url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/comments", | ||
"events_url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/events", | ||
"labels_url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/labels{/name}", | ||
"repository_url": "https://api.github.com/repos/1Password/1password-teams-open-source", | ||
"reactions": { | ||
"total_count": 0, | ||
"+1": 0, | ||
"-1": 0, | ||
"laugh": 0, | ||
"confused": 0, | ||
"heart": 0, | ||
"hooray": 0, | ||
"url": "https://api.github.com/repos/1Password/1password-teams-open-source/issues/6/reactions" | ||
}, | ||
"node_id": "I_kwDOJ6JE6M5rYwCY" | ||
} |