Skip to content

Commit 9829a4d

Browse files
committed
Update release list output to contain badges
1 parent f7d0988 commit 9829a4d

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

pkg/cmd/release/list/http.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ type Release struct {
1616
TagName string
1717
IsDraft bool
1818
IsPrerelease bool
19+
CreatedAt time.Time
1920
PublishedAt time.Time
2021
}
2122

pkg/cmd/release/list/list.go

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package list
22

33
import (
4+
"fmt"
45
"net/http"
56
"time"
67

@@ -64,10 +65,45 @@ func listRun(opts *ListOptions) error {
6465

6566
now := time.Now()
6667
table := utils.NewTablePrinter(opts.IO)
68+
iofmt := opts.IO.ColorScheme()
69+
seenLatest := false
6770
for _, rel := range releases {
68-
table.AddField(rel.TagName, nil, nil)
69-
table.AddField(text.ReplaceExcessiveWhitespace(rel.Name), nil, nil)
70-
table.AddField(utils.FuzzyAgo(now.Sub(rel.PublishedAt)), nil, nil)
71+
title := text.ReplaceExcessiveWhitespace(rel.Name)
72+
if title == "" {
73+
title = rel.TagName
74+
}
75+
table.AddField(title, nil, nil)
76+
77+
badge := ""
78+
var badgeColor func(string) string
79+
if !rel.IsDraft && !rel.IsPrerelease && !seenLatest {
80+
badge = "Latest"
81+
badgeColor = iofmt.Green
82+
seenLatest = true
83+
} else if rel.IsDraft {
84+
badge = "Draft"
85+
badgeColor = iofmt.Red
86+
} else if rel.IsPrerelease {
87+
badge = "Pre-release"
88+
badgeColor = iofmt.Yellow
89+
}
90+
table.AddField(badge, nil, badgeColor)
91+
92+
tagName := rel.TagName
93+
if table.IsTTY() {
94+
tagName = fmt.Sprintf("(%s)", tagName)
95+
}
96+
table.AddField(tagName, nil, nil)
97+
98+
pubDate := rel.PublishedAt
99+
if rel.PublishedAt.IsZero() {
100+
pubDate = rel.CreatedAt
101+
}
102+
publishedAt := pubDate.String()
103+
if table.IsTTY() {
104+
publishedAt = utils.FuzzyAgo(now.Sub(pubDate))
105+
}
106+
table.AddField(publishedAt, nil, iofmt.Gray)
71107
table.EndRow()
72108
}
73109
err = table.Render()

0 commit comments

Comments
 (0)