# HG changeset patch # User Sascha L. Teichmann # Date 1635458870 -7200 # Node ID a4fa1bf9b208285e66438a0c7e9822db86a892f4 # Parent 3f744907df49aec356500cd8ad2a83d27f3b1631 Aggregate to 'bla: 1 (baz); 2 (foo, bar)' instead of 'bla: foo (2), baz (1), bar (2)'. diff -r 3f744907df49 -r a4fa1bf9b208 pkg/imports/gm.go --- a/pkg/imports/gm.go Thu Oct 28 23:57:53 2021 +0200 +++ b/pkg/imports/gm.go Fri Oct 29 00:07:50 2021 +0200 @@ -20,6 +20,7 @@ "database/sql" "fmt" "sort" + "strconv" "strings" "time" @@ -452,20 +453,42 @@ header string, log func(string, ...interface{}), ) { + gs := make(gmLogs, 0, len(gls)) + for _, g := range gls { + if access(g) > 0 { + gs = append(gs, g) + } + } + + if len(gs) == 0 { + return + } + + sort.SliceStable(gs, func(i, j int) bool { + return access(gs[i]) < access(gs[j]) + }) + var sb strings.Builder - for _, gl := range gls { - if v := access(gl); v > 0 { + var last int + + for _, g := range gs { + if c := access(g); c != last { if sb.Len() == 0 { sb.WriteString(header) } else { - sb.WriteString(", ") + sb.WriteString("); ") } - fmt.Fprintf(&sb, "%s (%d)", gl.gid, v) + sb.WriteString(strconv.Itoa(c)) + sb.WriteString(" (") + last = c + } else { + sb.WriteString(", ") } + sb.WriteString(g.gid) } - if sb.Len() > 0 { - log(sb.String()) - } + + sb.WriteRune(')') + log(sb.String()) } func (gls gmLogs) logString(