Skip to content

Commit

Permalink
Update logic and copy for closed/approved applications to include pat…
Browse files Browse the repository at this point in the history
…h to application file
  • Loading branch information
jodyheavener committed Mar 28, 2024
1 parent 53cba32 commit 26f627a
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 19 deletions.
48 changes: 29 additions & 19 deletions script/reviewer.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ import (
type Status int

const (
Closed Status = iota
Approved
Approved Status = iota
Reviewing
Invalid
New
Expand All @@ -31,14 +30,14 @@ func (r *Reviewer) Review() {
r.application.Parse(r.gitHub.Issue)

status := r.getStatus()
r.updateLabels(status)
r.createComment(status)
isClosed := *r.gitHub.Issue.State == "closed"

r.updateLabels(status, isClosed)
r.createComment(status, isClosed)
}

func (r *Reviewer) getStatus() Status {
if *r.gitHub.Issue.State == "closed" {
return Closed
} else if r.gitHub.IssueHasLabel(LabelStatusApproved) {
if r.gitHub.IssueHasLabel(LabelStatusApproved) {
return Approved
} else if r.gitHub.IssueHasLabel(LabelStatusReviewing) {
return Reviewing
Expand All @@ -49,35 +48,46 @@ func (r *Reviewer) getStatus() Status {
}
}

func (r *Reviewer) createComment(status Status) {
func (r *Reviewer) createComment(status Status, isClosed bool) {
title := ""
body := ""
details := fmt.Sprintf("<details>\n<summary>Application data...</summary>\n\n```json\n%s\n```\n</details>", r.application.GetData())
// TODO: replace FILE_NAME with Application.FileName once available
dataPath := fmt.Sprintf("https://github.com/1Password/1password-teams-open-source/blob/main/data/%s", "FILE_NAME")

if status == Closed {
body = "This application is closed and changes will not be reviewed. If you have any questions, contact us at [[email protected]](mailto:[email protected])."
applicationData := fmt.Sprintf("<details>\n<summary>Application data...</summary>\n\n```json\n%s\n```\n</details>", r.application.GetData())
applicationFilePath := fmt.Sprintf("https://github.com/1Password/1password-teams-open-source/blob/main/data/%s", r.application.FileName())
approvedBody := fmt.Sprintf("This application has already been approved and changes will not be reviewed. If you would like to modify the details of your application, submit a pull request against the stored [application data](%s). If you have any questions, contact us at [[email protected]](mailto:[email protected]).", applicationFilePath)
closedBody := "This application is closed and changes will not be reviewed. If you have any questions, contact us at [[email protected]](mailto:[email protected])."

// If the issue is closed, let the user know that they can't make changes.
// If the issue was closed because it got approved, let them know how they can
// modify their application details after the fact.
if isClosed {
if status == Approved {
body = approvedBody
} else {
body = closedBody
}
// This scanerio should never occur, as an approved issue should
// immediately be closed, but let's cover all bases.
} else if status == Approved {
body = fmt.Sprintf("This application has already been approved and changes will not be reviewed. If you would like to modify the details of your application, submit a pull request against the stored [application data](%s). If you have any questions, contact us at [[email protected]](mailto:[email protected]).", dataPath)
body = approvedBody
} else if r.application.IsValid() {
if status == Reviewing {
title = "### 👍 Application still valid"
body = fmt.Sprintf("\n\n%s\n\nWe’ve run our automated pre-checks and your updated application is still valid.", details)
body = fmt.Sprintf("\n\n%s\n\nWe’ve run our automated pre-checks and your updated application is still valid.", applicationData)
} else {
title = "### ✅ Your application is valid"
body = fmt.Sprintf("\n\n%s\n\nThanks for applying! Our automated pre-checks have determined your application is valid. Next step: our team will review your application and may have follow-up questions. You can still make changes to your application and it’ll be re-evaluated.", details)
body = fmt.Sprintf("\n\n%s\n\nThanks for applying! Our automated pre-checks have determined your application is valid. Next step: our team will review your application and may have follow-up questions. You can still make changes to your application and it’ll be re-evaluated.", applicationData)
}
} else {
title = "### ❌ Your application is invalid"
body = fmt.Sprintf("\n\n%s\n\nOur automated pre-checks have detected the following problems:\n\n%s\n\nUpdate this issue to correct these problems and we’ll automatically re-evaluate your application.", details, r.application.RenderProblems())
body = fmt.Sprintf("\n\n%s\n\nOur automated pre-checks have detected the following problems:\n\n%s\n\nUpdate this issue to correct these problems and we’ll automatically re-evaluate your application.", applicationData, r.application.RenderProblems())
}

r.gitHub.CreateIssueComment(fmt.Sprintf("%s%s", title, body))
}

func (r *Reviewer) updateLabels(status Status) {
if status == Approved || status == Closed {
func (r *Reviewer) updateLabels(status Status, isClosed bool) {
if status == Approved || isClosed {
return
}

Expand Down
60 changes: 60 additions & 0 deletions script/test-issues/valid-project-approved-closed.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"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"
},
"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"
}

0 comments on commit 26f627a

Please sign in to comment.