mirror of
https://gitea.com/gitea/tea.git
synced 2026-04-11 04:28:35 +02:00
## Summary - Add `tea pulls review-comments <pull-index>` subcommand to list PR review comments with configurable fields (supports table/json/csv/yaml output) - Add `tea pulls resolve <comment-id>` subcommand to mark a review comment as resolved - Add `tea pulls unresolve <comment-id>` subcommand to unmark a review comment as resolved - Follow existing approve/reject pattern with shared `runResolveComment` helper in `review_helpers.go` ## Usage ```bash # List review comments for PR #42 tea pulls review-comments 42 # Resolve comment #789 tea pulls resolve 789 # Unresolve comment #789 tea pulls unresolve 789 # Custom output fields tea pulls review-comments 42 --fields id,path,body,resolver --output json ``` ## New Files | File | Description | |------|-------------| | `cmd/pulls/review_comments.go` | `review-comments` subcommand | | `cmd/pulls/resolve.go` | `resolve` subcommand | | `cmd/pulls/unresolve.go` | `unresolve` subcommand | | `modules/task/pull_review_comment.go` | Task layer: list, resolve, unresolve via SDK | | `modules/print/pull_review_comment.go` | Print formatting with `printable` interface | ## Modified Files | File | Description | |------|-------------| | `cmd/pulls.go` | Register 3 new commands | | `cmd/pulls/review_helpers.go` | Add shared `runResolveComment` helper | ## Test Plan - [x] `go build ./...` passes - [x] `go vet ./...` passes - [x] `tea pulls review-comments <PR-index>` lists comments with IDs - [x] `tea pulls resolve <comment-id>` resolves successfully - [x] `tea pulls unresolve <comment-id>` unresolves successfully - [x] `--output json` produces valid JSON output Reviewed-on: https://gitea.com/gitea/tea/pulls/948 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: Bo-Yi Wu <appleboy.tw@gmail.com> Co-committed-by: Bo-Yi Wu <appleboy.tw@gmail.com>
60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package task
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"code.gitea.io/sdk/gitea"
|
|
"code.gitea.io/tea/modules/context"
|
|
)
|
|
|
|
// ListPullReviewComments lists all review comments across all reviews for a PR
|
|
func ListPullReviewComments(ctx *context.TeaContext, idx int64) ([]*gitea.PullReviewComment, error) {
|
|
c := ctx.Login.Client()
|
|
|
|
reviews, _, err := c.ListPullReviews(ctx.Owner, ctx.Repo, idx, gitea.ListPullReviewsOptions{
|
|
ListOptions: gitea.ListOptions{Page: -1},
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var allComments []*gitea.PullReviewComment
|
|
for _, review := range reviews {
|
|
comments, _, err := c.ListPullReviewComments(ctx.Owner, ctx.Repo, idx, review.ID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
allComments = append(allComments, comments...)
|
|
}
|
|
|
|
return allComments, nil
|
|
}
|
|
|
|
// ResolvePullReviewComment resolves a review comment
|
|
func ResolvePullReviewComment(ctx *context.TeaContext, commentID int64) error {
|
|
c := ctx.Login.Client()
|
|
|
|
_, err := c.ResolvePullReviewComment(ctx.Owner, ctx.Repo, commentID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Printf("Comment %d resolved\n", commentID)
|
|
return nil
|
|
}
|
|
|
|
// UnresolvePullReviewComment unresolves a review comment
|
|
func UnresolvePullReviewComment(ctx *context.TeaContext, commentID int64) error {
|
|
c := ctx.Login.Client()
|
|
|
|
_, err := c.UnresolvePullReviewComment(ctx.Owner, ctx.Repo, commentID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Printf("Comment %d unresolved\n", commentID)
|
|
return nil
|
|
}
|