From 9e03d01bdfde9c0ced4aae512f6db551b22f49b3 Mon Sep 17 00:00:00 2001 From: Abhilash Gnan Date: Wed, 28 Oct 2020 19:45:21 +0100 Subject: [PATCH 1/3] Fetch all issue labels Signed-off-by: Abhilash Gnan --- api/queries_issue.go | 2 +- pkg/cmd/issue/shared/display.go | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/api/queries_issue.go b/api/queries_issue.go index 690180feb..08e0cf1d9 100644 --- a/api/queries_issue.go +++ b/api/queries_issue.go @@ -78,7 +78,7 @@ const fragments = ` url state updatedAt - labels(first: 3) { + labels(first: 100) { nodes { name } diff --git a/pkg/cmd/issue/shared/display.go b/pkg/cmd/issue/shared/display.go index 983052f19..a4cc68bef 100644 --- a/pkg/cmd/issue/shared/display.go +++ b/pkg/cmd/issue/shared/display.go @@ -57,9 +57,5 @@ func IssueLabelList(issue api.Issue) string { labelNames = append(labelNames, label.Name) } - list := strings.Join(labelNames, ", ") - if issue.Labels.TotalCount > len(issue.Labels.Nodes) { - list += ", …" - } - return list + return strings.Join(labelNames, ", ") } From 62e4c536ce0fa3c23995ead2410b8ded35203025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Wed, 11 Nov 2020 15:21:51 +0100 Subject: [PATCH 2/3] Ensure parentheses are preserved after truncating labels in table view --- pkg/cmd/issue/shared/display.go | 7 ++++++- pkg/cmd/issue/shared/display_test.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 pkg/cmd/issue/shared/display_test.go diff --git a/pkg/cmd/issue/shared/display.go b/pkg/cmd/issue/shared/display.go index a4cc68bef..bd6bc72d2 100644 --- a/pkg/cmd/issue/shared/display.go +++ b/pkg/cmd/issue/shared/display.go @@ -32,7 +32,7 @@ func PrintIssues(io *iostreams.IOStreams, prefix string, totalCount int, issues table.AddField(issue.State, nil, nil) } table.AddField(text.ReplaceExcessiveWhitespace(issue.Title), nil, nil) - table.AddField(labels, nil, utils.Gray) + table.AddField(labels, truncateLabels, utils.Gray) if table.IsTTY() { table.AddField(utils.FuzzyAgo(ago), nil, utils.Gray) } else { @@ -47,6 +47,11 @@ func PrintIssues(io *iostreams.IOStreams, prefix string, totalCount int, issues } } +func truncateLabels(w int, t string) string { + truncated := text.Truncate(w-2, t[1:len(t)-1]) + return fmt.Sprintf("(%s)", truncated) +} + func IssueLabelList(issue api.Issue) string { if len(issue.Labels.Nodes) == 0 { return "" diff --git a/pkg/cmd/issue/shared/display_test.go b/pkg/cmd/issue/shared/display_test.go new file mode 100644 index 000000000..d2a10b7ea --- /dev/null +++ b/pkg/cmd/issue/shared/display_test.go @@ -0,0 +1,11 @@ +package shared + +import "testing" + +func Test_truncateLabels(t *testing.T) { + got := truncateLabels(12, "(one, two, three)") + expected := "(one, tw...)" + if got != expected { + t.Errorf("expected %q, got %q", expected, got) + } +} From feec114bb6f1659e89060d5239e1b082df946f5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Wed, 11 Nov 2020 15:29:40 +0100 Subject: [PATCH 3/3] Fix `truncateLabels` for empty values --- pkg/cmd/issue/shared/display.go | 3 +++ pkg/cmd/issue/shared/display_test.go | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/pkg/cmd/issue/shared/display.go b/pkg/cmd/issue/shared/display.go index c774a010d..ff9b83e1e 100644 --- a/pkg/cmd/issue/shared/display.go +++ b/pkg/cmd/issue/shared/display.go @@ -49,6 +49,9 @@ func PrintIssues(io *iostreams.IOStreams, prefix string, totalCount int, issues } func truncateLabels(w int, t string) string { + if len(t) < 2 { + return t + } truncated := text.Truncate(w-2, t[1:len(t)-1]) return fmt.Sprintf("(%s)", truncated) } diff --git a/pkg/cmd/issue/shared/display_test.go b/pkg/cmd/issue/shared/display_test.go index d2a10b7ea..d6e97f7e8 100644 --- a/pkg/cmd/issue/shared/display_test.go +++ b/pkg/cmd/issue/shared/display_test.go @@ -8,4 +8,8 @@ func Test_truncateLabels(t *testing.T) { if got != expected { t.Errorf("expected %q, got %q", expected, got) } + + if truncateLabels(10, "") != "" { + t.Error("blank value error") + } }