share prForRun

This commit is contained in:
vilmibm 2021-03-29 16:37:42 -05:00
parent e7fa99b70f
commit 6f898dcbb3
2 changed files with 69 additions and 70 deletions

View file

@ -270,3 +270,71 @@ func Symbol(cs *iostreams.ColorScheme, status Status, conclusion Conclusion) (st
return "-", cs.Yellow
}
func PullRequestForRun(client *api.Client, repo ghrepo.Interface, run Run) (int, error) {
type response struct {
Repository struct {
PullRequests struct {
Nodes []struct {
Number int
HeadRepository struct {
Owner struct {
Login string
}
Name string
}
}
}
}
Number int
}
variables := map[string]interface{}{
"owner": repo.RepoOwner(),
"repo": repo.RepoName(),
"headRefName": run.HeadBranch,
}
query := `
query PullRequestForRun($owner: String!, $repo: String!, $headRefName: String!) {
repository(owner: $owner, name: $repo) {
pullRequests(headRefName: $headRefName, first: 1, orderBy: { field: CREATED_AT, direction: DESC }) {
nodes {
number
headRepository {
owner {
login
}
name
}
}
}
}
}`
var resp response
err := client.GraphQL(repo.RepoHost(), query, variables, &resp)
if err != nil {
return -1, err
}
prs := resp.Repository.PullRequests.Nodes
if len(prs) == 0 {
return -1, fmt.Errorf("no matching PR found for %s", run.HeadBranch)
}
number := -1
for _, pr := range prs {
if pr.HeadRepository.Owner.Login == run.HeadRepository.Owner.Login && pr.HeadRepository.Name == run.HeadRepository.Name {
number = pr.Number
}
}
if number == -1 {
return number, fmt.Errorf("no matching PR found for %s", run.HeadBranch)
}
return number, nil
}

View file

@ -107,7 +107,7 @@ func runView(opts *ViewOptions) error {
}
prNumber := ""
number, err := prForRun(client, repo, *run)
number, err := shared.PullRequestForRun(client, repo, *run)
if err == nil {
prNumber = fmt.Sprintf(" #%d", number)
}
@ -165,7 +165,6 @@ func runView(opts *ViewOptions) error {
fmt.Fprintln(out)
fmt.Fprintln(out, cs.Bold("ANNOTATIONS"))
fmt.Fprintln(out, shared.RenderAnnotations(cs, annotations))
}
fmt.Fprintln(out)
@ -178,71 +177,3 @@ func runView(opts *ViewOptions) error {
return nil
}
func prForRun(client *api.Client, repo ghrepo.Interface, run shared.Run) (int, error) {
type response struct {
Repository struct {
PullRequests struct {
Nodes []struct {
Number int
HeadRepository struct {
Owner struct {
Login string
}
Name string
}
}
}
}
Number int
}
variables := map[string]interface{}{
"owner": repo.RepoOwner(),
"repo": repo.RepoName(),
"headRefName": run.HeadBranch,
}
query := `
query PullRequestForRun($owner: String!, $repo: String!, $headRefName: String!) {
repository(owner: $owner, name: $repo) {
pullRequests(headRefName: $headRefName, first: 1, orderBy: { field: CREATED_AT, direction: DESC }) {
nodes {
number
headRepository {
owner {
login
}
name
}
}
}
}
}`
var resp response
err := client.GraphQL(repo.RepoHost(), query, variables, &resp)
if err != nil {
return -1, err
}
prs := resp.Repository.PullRequests.Nodes
if len(prs) == 0 {
return -1, fmt.Errorf("no matching PR found for %s", run.HeadBranch)
}
number := -1
for _, pr := range prs {
if pr.HeadRepository.Owner.Login == run.HeadRepository.Owner.Login && pr.HeadRepository.Name == run.HeadRepository.Name {
number = pr.Number
}
}
if number == -1 {
return number, fmt.Errorf("no matching PR found for %s", run.HeadBranch)
}
return number, nil
}