The State field allows printing the container state without
additional information about uptime, healthcheck, etc.
With this patch, the container's state can be printed independently:
```bash
docker ps -a --format '{{.State}}'
running
paused
exited
created
```
```bash
docker ps -a --format 'table {{.Names}}\t{{.State}}\t{{.Status}}'
NAMES STATE STATUS
elastic_burnell running Up About a minute
pausie paused Up 5 minutes (Paused)
peaceful_stonebraker exited Exited (0) 10 hours ago
vigilant_shaw created Created
```
```bash
docker ps -a --format 'raw'
container_id: 0445f73f3a71
image: docker-cli-dev
command: "ash"
created_at: 2019-07-12 11:16:11 +0000 UTC
state: running
status: Up 2 minutes
names: elastic_burnell
labels:
ports:
container_id: 1aff69a3912c
image: nginx:alpine
command: "nginx -g 'daemon of ..."
created_at: 2019-07-12 11:12:10 +0000 UTC
state: paused
status: Up 6 minutes (Paused)
names: pausie
labels: maintainer=NGINX Docker Maintainers <docker-maint@nginx.com>
ports: 80/tcp
container_id: d48acf66c318
image: alpine:3.9.3
command: "id -u"
created_at: 2019-07-12 00:52:17 +0000 UTC
state: exited
status: Exited (0) 10 hours ago
names: peaceful_stonebraker
labels:
ports:
container_id: a0733fe0dace
image: b7b28af77ffe
command: "/bin/sh -c '#(nop) ..."
created_at: 2019-07-12 00:51:29 +0000 UTC
state: created
status: Created
names: vigilant_shaw
labels:
ports:
```
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package formatter
|
|
|
|
import "strings"
|
|
|
|
// Common header constants
|
|
const (
|
|
CreatedSinceHeader = "CREATED"
|
|
CreatedAtHeader = "CREATED AT"
|
|
SizeHeader = "SIZE"
|
|
LabelsHeader = "LABELS"
|
|
NameHeader = "NAME"
|
|
DescriptionHeader = "DESCRIPTION"
|
|
DriverHeader = "DRIVER"
|
|
ScopeHeader = "SCOPE"
|
|
StateHeader = "STATE"
|
|
StatusHeader = "STATUS"
|
|
PortsHeader = "PORTS"
|
|
ImageHeader = "IMAGE"
|
|
ContainerIDHeader = "CONTAINER ID"
|
|
)
|
|
|
|
// SubContext defines what Context implementation should provide
|
|
type SubContext interface {
|
|
FullHeader() interface{}
|
|
}
|
|
|
|
// SubHeaderContext is a map destined to formatter header (table format)
|
|
type SubHeaderContext map[string]string
|
|
|
|
// Label returns the header label for the specified string
|
|
func (c SubHeaderContext) Label(name string) string {
|
|
n := strings.Split(name, ".")
|
|
r := strings.NewReplacer("-", " ", "_", " ")
|
|
h := r.Replace(n[len(n)-1])
|
|
|
|
return h
|
|
}
|
|
|
|
// HeaderContext provides the subContext interface for managing headers
|
|
type HeaderContext struct {
|
|
Header interface{}
|
|
}
|
|
|
|
// FullHeader returns the header as an interface
|
|
func (c *HeaderContext) FullHeader() interface{} {
|
|
return c.Header
|
|
}
|
|
|
|
func stripNamePrefix(ss []string) []string {
|
|
sss := make([]string, len(ss))
|
|
for i, s := range ss {
|
|
sss[i] = s[1:]
|
|
}
|
|
|
|
return sss
|
|
}
|