From 2b11f408fd875c6426c1697a93db0786dcabae59 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 8 Dec 2020 12:06:05 +0800 Subject: [PATCH] Pull DetailView: Show more pull informations (#271) Pull Detailview: add head/base-branch, reviews, mergable info print info if reviews can not be loaded No Conflicts Reviewed-on: https://gitea.com/gitea/tea/pulls/271 Reviewed-by: Norwin Reviewed-by: Lunny Xiao Co-Authored-By: 6543 <6543@obermui.de> Co-Committed-By: 6543 <6543@obermui.de> --- cmd/pulls.go | 15 ++++++++++++--- cmd/pulls/create.go | 2 +- modules/print/issue.go | 2 +- modules/print/pull.go | 42 ++++++++++++++++++++++++++++++++++++++---- 4 files changed, 52 insertions(+), 9 deletions(-) diff --git a/cmd/pulls.go b/cmd/pulls.go index ae18da4..57c9bc1 100644 --- a/cmd/pulls.go +++ b/cmd/pulls.go @@ -5,12 +5,15 @@ package cmd import ( + "fmt" + "code.gitea.io/tea/cmd/flags" "code.gitea.io/tea/cmd/pulls" "code.gitea.io/tea/modules/config" "code.gitea.io/tea/modules/print" "code.gitea.io/tea/modules/utils" + "code.gitea.io/sdk/gitea" "github.com/urfave/cli/v2" ) @@ -40,16 +43,22 @@ func runPulls(ctx *cli.Context) error { func runPullDetail(index string) error { login, owner, repo := config.InitCommand(flags.GlobalRepoValue, flags.GlobalLoginValue, flags.GlobalRemoteValue) - idx, err := utils.ArgToIndex(index) if err != nil { return err } - pr, _, err := login.Client().GetPullRequest(owner, repo, idx) + + client := login.Client() + pr, _, err := client.GetPullRequest(owner, repo, idx) if err != nil { return err } - print.PullDetails(pr) + reviews, _, err := client.ListPullReviews(owner, repo, idx, gitea.ListPullReviewsOptions{}) + if err != nil { + fmt.Printf("error while loading reviews: %v\n", err) + } + + print.PullDetails(pr, reviews) return nil } diff --git a/cmd/pulls/create.go b/cmd/pulls/create.go index 7f91c0a..8547d37 100644 --- a/cmd/pulls/create.go +++ b/cmd/pulls/create.go @@ -143,7 +143,7 @@ func runPullsCreate(ctx *cli.Context) error { log.Fatalf("could not create PR from %s to %s:%s: %s", head, ownerArg, base, err) } - print.PullDetails(pr) + print.PullDetails(pr, nil) fmt.Println(pr.HTMLURL) return err diff --git a/modules/print/issue.go b/modules/print/issue.go index ddafa28..2df7dfc 100644 --- a/modules/print/issue.go +++ b/modules/print/issue.go @@ -13,7 +13,7 @@ import ( // IssueDetails print an issue rendered to stdout func IssueDetails(issue *gitea.Issue) { OutputMarkdown(fmt.Sprintf( - "# #%d %s (%s)\n%s created %s\n\n%s\n", + "# #%d %s (%s)\n@%s created %s\n\n%s\n", issue.Index, issue.Title, issue.State, diff --git a/modules/print/pull.go b/modules/print/pull.go index 050c483..5f1e946 100644 --- a/modules/print/pull.go +++ b/modules/print/pull.go @@ -11,14 +11,48 @@ import ( ) // PullDetails print an pull rendered to stdout -func PullDetails(pr *gitea.PullRequest) { - OutputMarkdown(fmt.Sprintf( - "# #%d %s (%s)\n%s created %s\n\n%s\n", +func PullDetails(pr *gitea.PullRequest, reviews []*gitea.PullReview) { + base := pr.Base.Name + head := pr.Head.Name + if pr.Head.RepoID != pr.Base.RepoID { + if pr.Head.Repository != nil { + head = pr.Head.Repository.Owner.UserName + ":" + head + } else { + head = "delete:" + head + } + } + + out := fmt.Sprintf( + "# #%d %s (%s)\n@%s created %s\t**%s** <- **%s**\n\n%s\n", pr.Index, pr.Title, pr.State, pr.Poster.UserName, FormatTime(*pr.Created), + base, + head, pr.Body, - )) + ) + + if len(reviews) != 0 { + out += "\n" + revMap := make(map[string]gitea.ReviewStateType) + for _, review := range reviews { + switch review.State { + case gitea.ReviewStateApproved, + gitea.ReviewStateRequestChanges, + gitea.ReviewStateRequestReview: + revMap[review.Reviewer.UserName] = review.State + } + } + for k, v := range revMap { + out += fmt.Sprintf("\n @%s: %s", k, v) + } + } + + if pr.State == gitea.StateOpen && pr.Mergeable { + out += "\nNo Conflicts" + } + + OutputMarkdown(out) }