diff --git a/cmd/review-bot/main.go b/cmd/review-bot/main.go index 7a59ded..ca42dfb 100644 --- a/cmd/review-bot/main.go +++ b/cmd/review-bot/main.go @@ -170,7 +170,8 @@ func main() { } client = github.NewClient(*reviewerToken, ghBaseURL) default: - panic("unreachable: unhandled provider " + *provider) + fmt.Fprintf(os.Stderr, "Error: unhandled provider %q\n", *provider) + os.Exit(1) } slog.Info("VCS client initialized", "provider", *provider) @@ -523,7 +524,8 @@ func verdictToEvent(verdict string) vcs.ReviewEvent { // For GitHub: dismisses old reviews. // For Gitea: edits the review body and resolves inline comments. func supersedeOldReviews(ctx context.Context, client vcs.Client, provider, vcsURL, owner, repoName string, prNumber int, oldReviews []vcs.Review, newReviewID int64, sentinel string) error { - if provider == "github" { + switch provider { + case "github": for _, old := range oldReviews { if err := client.DismissReview(ctx, owner, repoName, prNumber, old.ID, "Superseded by new review"); err != nil { slog.Warn("failed to dismiss review", "id", old.ID, "error", err) @@ -532,9 +534,12 @@ func supersedeOldReviews(ctx context.Context, client vcs.Client, provider, vcsUR } } return nil + case "gitea": + // Gitea: EditComment + ResolveComment flow + default: + return fmt.Errorf("supersedeOldReviews: unsupported provider %q", provider) } - // Gitea: existing EditComment + ResolveComment flow giteaAdapter, ok := client.(*gitea.Adapter) if !ok { return fmt.Errorf("expected gitea.Adapter for gitea provider, got %T", client) diff --git a/github/reviews.go b/github/reviews.go index c6ed536..1d8066f 100644 --- a/github/reviews.go +++ b/github/reviews.go @@ -42,7 +42,6 @@ type reviewCommentCreate struct { // dismissReviewRequest is the GitHub API request body for dismissing a review. type dismissReviewRequest struct { Message string `json:"message"` - Event string `json:"event"` } // userResponse is the GitHub API response for the authenticated user. @@ -60,7 +59,7 @@ func translateReviewEvent(event vcs.ReviewEvent) string { case vcs.ReviewEventComment: return "COMMENT" default: - return string(event) + return "COMMENT" } } @@ -161,7 +160,6 @@ func (c *Client) DismissReview(ctx context.Context, owner, repo string, number i payload := dismissReviewRequest{ Message: message, - Event: "DISMISS", } _, err := c.doJSONRequest(ctx, http.MethodPut, reqURL, payload)