From d64dcdca95c8705750489fb94534872b78c0d131 Mon Sep 17 00:00:00 2001 From: vilmibm Date: Wed, 29 Jan 2020 12:00:04 -0600 Subject: [PATCH] print repo info for status commands --- api/queries_issue.go | 14 +++++++++++--- api/queries_pr.go | 11 +++++++++++ command/issue.go | 8 ++++++++ command/pr.go | 9 ++++++++- context/formatted.go | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 context/formatted.go diff --git a/api/queries_issue.go b/api/queries_issue.go index 934467e05..96f3574d4 100644 --- a/api/queries_issue.go +++ b/api/queries_issue.go @@ -8,9 +8,10 @@ import ( ) type IssuesPayload struct { - Assigned IssuesAndTotalCount - Mentioned IssuesAndTotalCount - Authored IssuesAndTotalCount + ParentRepo string + Assigned IssuesAndTotalCount + Mentioned IssuesAndTotalCount + Authored IssuesAndTotalCount } type IssuesAndTotalCount struct { @@ -108,6 +109,9 @@ func IssueStatus(client *Client, repo ghrepo.Interface, currentUsername string) TotalCount int Nodes []Issue } + Parent struct { + NameWithOwner string + } HasIssuesEnabled bool } } @@ -115,6 +119,9 @@ func IssueStatus(client *Client, repo ghrepo.Interface, currentUsername string) query := fragments + ` query($owner: String!, $repo: String!, $viewer: String!, $per_page: Int = 10) { repository(owner: $owner, name: $repo) { + parent { + nameWithOwner + } hasIssuesEnabled assigned: issues(filterBy: {assignee: $viewer, states: OPEN}, first: $per_page, orderBy: {field: UPDATED_AT, direction: DESC}) { totalCount @@ -154,6 +161,7 @@ func IssueStatus(client *Client, repo ghrepo.Interface, currentUsername string) } payload := IssuesPayload{ + ParentRepo: resp.Repository.Parent.NameWithOwner, Assigned: IssuesAndTotalCount{ Issues: resp.Repository.Assigned.Nodes, TotalCount: resp.Repository.Assigned.TotalCount, diff --git a/api/queries_pr.go b/api/queries_pr.go index 734245acb..6daaa1c85 100644 --- a/api/queries_pr.go +++ b/api/queries_pr.go @@ -8,6 +8,7 @@ import ( ) type PullRequestsPayload struct { + ParentRepo string ViewerCreated PullRequestAndTotalCount ReviewRequested PullRequestAndTotalCount CurrentPR *PullRequest @@ -139,6 +140,9 @@ func PullRequests(client *Client, repo ghrepo.Interface, currentPRNumber int, cu type response struct { Repository struct { + Parent struct { + NameWithOwner string + } PullRequests edges PullRequest *PullRequest } @@ -185,6 +189,9 @@ func PullRequests(client *Client, repo ghrepo.Interface, currentPRNumber int, cu queryPrefix := ` query($owner: String!, $repo: String!, $headRefName: String!, $viewerQuery: String!, $reviewerQuery: String!, $per_page: Int = 10) { repository(owner: $owner, name: $repo) { + parent { + nameWithOwner + } pullRequests(headRefName: $headRefName, states: OPEN, first: $per_page) { totalCount edges { @@ -199,6 +206,9 @@ func PullRequests(client *Client, repo ghrepo.Interface, currentPRNumber int, cu queryPrefix = ` query($owner: String!, $repo: String!, $number: Int!, $viewerQuery: String!, $reviewerQuery: String!, $per_page: Int = 10) { repository(owner: $owner, name: $repo) { + parent { + nameWithOwner + } pullRequest(number: $number) { ...prWithReviews } @@ -269,6 +279,7 @@ func PullRequests(client *Client, repo ghrepo.Interface, currentPRNumber int, cu } payload := PullRequestsPayload{ + ParentRepo: resp.Repository.Parent.NameWithOwner, ViewerCreated: PullRequestAndTotalCount{ PullRequests: viewerCreated, TotalCount: resp.ViewerCreated.TotalCount, diff --git a/command/issue.go b/command/issue.go index 711df46a6..5ada3d249 100644 --- a/command/issue.go +++ b/command/issue.go @@ -11,6 +11,7 @@ import ( "time" "github.com/cli/cli/api" + "github.com/cli/cli/context" "github.com/cli/cli/git" "github.com/cli/cli/internal/ghrepo" "github.com/cli/cli/pkg/githubtemplate" @@ -175,6 +176,13 @@ func issueStatus(cmd *cobra.Command, args []string) error { out := colorableOut(cmd) + repoInfo, err := context.FormattedInfo(ctx, issuePayload.ParentRepo) + if err != nil { + return err + } + + fmt.Fprintln(out, repoInfo) + printHeader(out, "Issues assigned to you") if issuePayload.Assigned.TotalCount > 0 { printIssues(out, " ", issuePayload.Assigned.TotalCount, issuePayload.Assigned.Issues) diff --git a/command/pr.go b/command/pr.go index 1a227cc63..e4906d087 100644 --- a/command/pr.go +++ b/command/pr.go @@ -97,12 +97,19 @@ func prStatus(cmd *cobra.Command, args []string) error { return err } + out := colorableOut(cmd) + prPayload, err := api.PullRequests(apiClient, baseRepo, currentPRNumber, currentPRHeadRef, currentUser) if err != nil { return err } - out := colorableOut(cmd) + repoInfo, err := context.FormattedInfo(ctx, prPayload.ParentRepo) + if err != nil { + return err + } + + fmt.Fprintln(out, repoInfo) printHeader(out, "Current branch") if prPayload.CurrentPR != nil { diff --git a/context/formatted.go b/context/formatted.go new file mode 100644 index 000000000..a4250c6c9 --- /dev/null +++ b/context/formatted.go @@ -0,0 +1,33 @@ +package context + +import ( + "fmt" + "github.com/cli/cli/internal/ghrepo" + "github.com/cli/cli/utils" +) + +func FormattedInfo(c Context, parentRepo string) (string, error) { + baseRepo, err := c.BaseRepo() + if err != nil { + return "", err + } + authLogin, err := c.AuthLogin() + if err != nil { + return "", err + } + + forkInfo := "" + if parentRepo != "" { + forkInfo = fmt.Sprintf("(fork of %s) ", parentRepo) + } + + out := fmt.Sprintf("%s%s %s%s%s", + utils.Gray("in "), + utils.Magenta(ghrepo.FullName(baseRepo)), + utils.Yellow(forkInfo), + utils.Gray("as "), + utils.Magenta(authLogin), + ) + + return out, nil +}