diff --git a/api/queries_issue.go b/api/queries_issue.go index 69c3dd988..da98e8442 100644 --- a/api/queries_issue.go +++ b/api/queries_issue.go @@ -15,6 +15,7 @@ type Issue struct { Number int Title string URL string + State string Labels struct { Nodes []IssueLabel @@ -37,6 +38,7 @@ const fragments = ` number title url + state labels(first: 3) { nodes { name diff --git a/command/issue.go b/command/issue.go index ad1db6066..f0aa5be78 100644 --- a/command/issue.go +++ b/command/issue.go @@ -92,12 +92,28 @@ func issueList(cmd *cobra.Command, args []string) error { return err } - if len(issues) > 0 { - printIssues("", issues...) - } else { - message := fmt.Sprintf("There are no open issues") - printMessage(message) + if len(issues) == 0 { + printMessage("There are no open issues") + return nil } + + table := utils.NewTablePrinter(cmd.OutOrStdout()) + for _, issue := range issues { + issueNum := strconv.Itoa(issue.Number) + if table.IsTTY() { + issueNum = "#" + issueNum + } + labels := labelList(issue) + if labels != "" && table.IsTTY() { + labels = fmt.Sprintf("(%s)", labels) + } + table.AddField(issueNum, nil, colorFuncForState(issue.State)) + table.AddField(issue.Title, nil, nil) + table.AddField(labels, nil, utils.Gray) + table.EndRow() + } + table.Render() + return nil }