Skip to content

Commit

Permalink
Merge pull request docker#5757 from vvoland/images-tree-name
Browse files Browse the repository at this point in the history
image/tree: Print longest names first and use full width
  • Loading branch information
vvoland authored Jan 20, 2025
2 parents 1f3615e + 26010e4 commit 66a584a
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions cli/command/image/tree.go
Original file line number Diff line number Diff line change
Expand Up @@ -281,11 +281,23 @@ func printNames(out *streams.Out, headers []imgColumn, img topImage, color, unta
_, _ = fmt.Fprint(out, headers[0].Print(untaggedColor, "<untagged>"))
}

for nameIdx, name := range img.Names {
if nameIdx != 0 {
_, _ = fmt.Fprintln(out, "")
// TODO: Replace with namesLongestToShortest := slices.SortedFunc(slices.Values(img.Names))
// once we move to Go 1.23.
namesLongestToShortest := make([]string, len(img.Names))
copy(namesLongestToShortest, img.Names)
sort.Slice(namesLongestToShortest, func(i, j int) bool {
return len(namesLongestToShortest[i]) > len(namesLongestToShortest[j])
})

for nameIdx, name := range namesLongestToShortest {
// Don't limit first names to the column width because only the last
// name will be printed alongside other columns.
if nameIdx < len(img.Names)-1 {
_, fullWidth := out.GetTtySize()
_, _ = fmt.Fprintln(out, color.Apply(truncateRunes(name, int(fullWidth))))
} else {
_, _ = fmt.Fprint(out, headers[0].Print(color, name))
}
_, _ = fmt.Fprint(out, headers[0].Print(color, name))
}
}

Expand Down

0 comments on commit 66a584a

Please sign in to comment.