Merge pull request #6362 from thaJeztah/cleanup_formatter
cli/command/formatter: ContainerContext: assorted cleanups, fixes
This commit is contained in:
@ -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
|
||||
|
||||
@ -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,
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user