Merge pull request #6362 from thaJeztah/cleanup_formatter

cli/command/formatter: ContainerContext: assorted cleanups, fixes
This commit is contained in:
Sebastiaan van Stijn
2025-08-25 16:22:06 +02:00
committed by GitHub
2 changed files with 63 additions and 20 deletions

View File

@ -170,27 +170,33 @@ func (c *ContainerContext) Image() string {
if c.c.Image == "" {
return "<no image>"
}
if c.trunc {
if trunc := TruncateID(c.c.ImageID); trunc == TruncateID(c.c.Image) {
return trunc
if !c.trunc {
return c.c.Image
}
if trunc := TruncateID(c.c.ImageID); trunc == TruncateID(c.c.Image) {
return trunc
}
ref, err := reference.ParseNormalizedNamed(c.c.Image)
if err != nil {
return c.c.Image
}
if _, ok := ref.(reference.Digested); ok {
// strip the digest, but preserve the tag (if any)
var tag string
if t, ok := ref.(reference.Tagged); ok {
tag = t.Tag()
}
// truncate digest if no-trunc option was not selected
ref, err := reference.ParseNormalizedNamed(c.c.Image)
if err == nil {
if nt, ok := ref.(reference.NamedTagged); ok {
// case for when a tag is provided
if namedTagged, err := reference.WithTag(reference.TrimNamed(nt), nt.Tag()); err == nil {
return reference.FamiliarString(namedTagged)
}
} else {
// case for when a tag is not provided
named := reference.TrimNamed(ref)
return reference.FamiliarString(named)
ref = reference.TrimNamed(ref)
if tag != "" {
if out, err := reference.WithTag(ref, tag); err == nil {
ref = out
}
}
}
return c.c.Image
// Format as "familiar" name with "docker.io[/library]" trimmed.
return reference.FamiliarString(ref)
}
// Command returns's the container's command. If the trunc option is set, the

View File

@ -54,14 +54,51 @@ func TestContainerPsContext(t *testing.T) {
call: ctx.Image,
},
{
container: container.Summary{Image: "verylongimagename"},
container: container.Summary{Image: "ubuntu:latest"},
trunc: true,
expValue: "verylongimagename",
expValue: "ubuntu:latest",
call: ctx.Image,
},
{
container: container.Summary{Image: "verylongimagename"},
expValue: "verylongimagename",
container: container.Summary{Image: "docker.io/library/ubuntu"},
trunc: true,
expValue: "ubuntu",
call: ctx.Image,
},
{
container: container.Summary{Image: "docker.io/library/ubuntu:latest"},
trunc: true,
expValue: "ubuntu:latest",
call: ctx.Image,
},
{
container: container.Summary{Image: "ubuntu:latest@sha256:a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5"},
trunc: true,
expValue: "ubuntu:latest",
call: ctx.Image,
},
{
container: container.Summary{Image: "ubuntu@sha256:a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5"},
trunc: true,
expValue: "ubuntu",
call: ctx.Image,
},
{
container: container.Summary{Image: "docker.io/library/ubuntu@sha256:a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5"},
trunc: true,
expValue: "ubuntu",
call: ctx.Image,
},
{
container: container.Summary{Image: "docker.io/library/ubuntu:latest@sha256:a5a665ff33eced1e0803148700880edab4269067ed77e27737a708d0d293fbf5"},
trunc: true,
expValue: "ubuntu:latest",
call: ctx.Image,
},
{
container: container.Summary{Image: "verylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagename"},
trunc: true,
expValue: "verylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagenameverylongimagename",
call: ctx.Image,
},
{