diff --git a/labels.py b/labels.py index 949dea0..c72bc5a 100644 --- a/labels.py +++ b/labels.py @@ -25,7 +25,8 @@ def issues_event(data): issue_labels = issue["labels"] # Ensure valid status on issue close/open. - status_closed = {"Status/Archived", "Status/Resolved", "Status/Duplicate"} + status_resolved = "Status/Resolved" + status_closed = {"Status/Archived", "Status/Duplicate", status_resolved} status_prefix = "Status/" type_prefix = "Type/" @@ -39,12 +40,20 @@ def issues_event(data): else: new_status = "Status/Resolved" elif action == "reopened": - for label in issue_labels: - if label["name"].startswith(status_prefix) and label["name"] not in status_closed: - return - - # Set to Needs Triage + # Reopen as "Needs Triage" unless the issue was "Resolved" + # Reopening a issue after it had been set to "Resolved" means a commit + # attempted to fix it, but didn't actually fix it and people are still + # experiencing the issue. new_status = "Status/Needs Triage" + for label in issue_labels: + if label["name"].startswith(status_prefix): + if label["name"] not in status_closed: + # Issue was reopened and had a new status label set. + # So skip setting a new one. + return + if label["name"] == status_resolved: + new_status = "Status/Confirmed" + break else: return