-
Notifications
You must be signed in to change notification settings - Fork 23
/
releases.go
48 lines (39 loc) · 1.2 KB
/
releases.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package print
import (
"strings"
"text/tabwriter"
"text/template"
"time"
"github.com/replicatedhq/replicated/pkg/types"
)
var releasesTmplSrc = `SEQUENCE CREATED EDITED ACTIVE_CHANNELS
{{ range . -}}
{{ .Sequence }} {{ time .CreatedAt }} {{ .EditedAt }} {{ .ActiveChannels }}
{{ end }}`
var releasesTmpl = template.Must(template.New("Releases").Funcs(funcs).Parse(releasesTmplSrc))
func Releases(w *tabwriter.Writer, appReleases []types.ReleaseInfo) error {
rs := make([]map[string]interface{}, len(appReleases))
for i, r := range appReleases {
// join active channel names like "Stable,Unstable"
activeChans := make([]string, len(r.ActiveChannels))
for j, activeChan := range r.ActiveChannels {
activeChans[j] = activeChan.Name
}
activeChansField := strings.Join(activeChans, ",")
// don't print edited if it's the same as created
edited := r.EditedAt.Format(time.RFC3339)
if r.CreatedAt.Equal(r.EditedAt) {
edited = ""
}
rs[i] = map[string]interface{}{
"Sequence": r.Sequence,
"CreatedAt": r.CreatedAt,
"EditedAt": edited,
"ActiveChannels": activeChansField,
}
}
if err := releasesTmpl.Execute(w, rs); err != nil {
return err
}
return w.Flush()
}