Skip to content

Commit 09cd4ea

Browse files
authored
Merge pull request #6362 from thaJeztah/cleanup_formatter
cli/command/formatter: ContainerContext: assorted cleanups, fixes
2 parents a6826de + 4f944e2 commit 09cd4ea

File tree

2 files changed

+63
-20
lines changed

2 files changed

+63
-20
lines changed

cli/command/formatter/container.go

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -170,27 +170,33 @@ func (c *ContainerContext) Image() string {
170170
if c.c.Image == "" {
171171
return "<no image>"
172172
}
173-
if c.trunc {
174-
if trunc := TruncateID(c.c.ImageID); trunc == TruncateID(c.c.Image) {
175-
return trunc
173+
if !c.trunc {
174+
return c.c.Image
175+
}
176+
if trunc := TruncateID(c.c.ImageID); trunc == TruncateID(c.c.Image) {
177+
return trunc
178+
}
179+
ref, err := reference.ParseNormalizedNamed(c.c.Image)
180+
if err != nil {
181+
return c.c.Image
182+
}
183+
184+
if _, ok := ref.(reference.Digested); ok {
185+
// strip the digest, but preserve the tag (if any)
186+
var tag string
187+
if t, ok := ref.(reference.Tagged); ok {
188+
tag = t.Tag()
176189
}
177-
// truncate digest if no-trunc option was not selected
178-
ref, err := reference.ParseNormalizedNamed(c.c.Image)
179-
if err == nil {
180-
if nt, ok := ref.(reference.NamedTagged); ok {
181-
// case for when a tag is provided
182-
if namedTagged, err := reference.WithTag(reference.TrimNamed(nt), nt.Tag()); err == nil {
183-
return reference.FamiliarString(namedTagged)
184-
}
185-
} else {
186-
// case for when a tag is not provided
187-
named := reference.TrimNamed(ref)
188-
return reference.FamiliarString(named)
190+
ref = reference.TrimNamed(ref)
191+
if tag != "" {
192+
if out, err := reference.WithTag(ref, tag); err == nil {
193+
ref = out
189194
}
190195
}
191196
}
192197

193-
return c.c.Image
198+
// Format as "familiar" name with "docker.io[/library]" trimmed.
199+
return reference.FamiliarString(ref)
194200
}
195201

196202
// Command returns's the container's command. If the trunc option is set, the

cli/command/formatter/container_test.go

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,51 @@ func TestContainerPsContext(t *testing.T) {
5454
call: ctx.Image,
5555
},
5656
{
57-
container: container.Summary{Image: "verylongimagename"},
57+
container: container.Summary{Image: "ubuntu:latest"},
5858
trunc: true,
59-
expValue: "verylongimagename",
59+
expValue: "ubuntu:latest",
6060
call: ctx.Image,
6161
},
6262
{
63-
container: container.Summary{Image: "verylongimagename"},
64-
expValue: "verylongimagename",
63+
container: container.Summary{Image: "docker.io/library/ubuntu"},
64+
trunc: true,
65+
expValue: "ubuntu",
66+
call: ctx.Image,
67+
},
68+
{
69+
container: container.Summary{Image: "docker.io/library/ubuntu:latest"},
70+
trunc: true,
71+
expValue: "ubuntu:latest",
72+
call: ctx.Image,
73+
},
74+
{
75+
container: container.Summary{Image: "ubuntu:latest@sha256:a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5"},
76+
trunc: true,
77+
expValue: "ubuntu:latest",
78+
call: ctx.Image,
79+
},
80+
{
81+
container: container.Summary{Image: "ubuntu@sha256:a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5"},
82+
trunc: true,
83+
expValue: "ubuntu",
84+
call: ctx.Image,
85+
},
86+
{
87+
container: container.Summary{Image: "docker.io/library/ubuntu@sha256:a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5"},
88+
trunc: true,
89+
expValue: "ubuntu",
90+
call: ctx.Image,
91+
},
92+
{
93+
container: container.Summary{Image: "docker.io/library/ubuntu:latest@sha256:a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5"},
94+
trunc: true,
95+
expValue: "ubuntu:latest",
96+
call: ctx.Image,
97+
},
98+
{
99+
container: container.Summary{Image: "verylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagename"},
100+
trunc: true,
101+
expValue: "verylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagename",
65102
call: ctx.Image,
66103
},
67104
{

0 commit comments

Comments
 (0)