12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package ps
- import (
- "io"
- "github.com/docker/docker/api/types"
- )
- const (
- tableFormatKey = "table"
- rawFormatKey = "raw"
- defaultTableFormat = "table {{.ID}}\t{{.Image}}\t{{.Command}}\t{{.RunningFor}} ago\t{{.Status}}\t{{.Ports}}\t{{.Names}}"
- defaultQuietFormat = "{{.ID}}"
- )
- // Context contains information required by the formatter to print the output as desired.
- type Context struct {
- // Output is the output stream to which the formatted string is written.
- Output io.Writer
- // Format is used to choose raw, table or custom format for the output.
- Format string
- // Size when set to true will display the size of the output.
- Size bool
- // Quiet when set to true will simply print minimal information.
- Quiet bool
- // Trunc when set to true will truncate the output of certain fields such as Container ID.
- Trunc bool
- }
- // Format helps to format the output using the parameters set in the Context.
- // Currently Format allow to display in raw, table or custom format the output.
- func Format(ctx Context, containers []types.Container) {
- switch ctx.Format {
- case tableFormatKey:
- tableFormat(ctx, containers)
- case rawFormatKey:
- rawFormat(ctx, containers)
- default:
- customFormat(ctx, containers)
- }
- }
- func rawFormat(ctx Context, containers []types.Container) {
- if ctx.Quiet {
- ctx.Format = `container_id: {{.ID}}`
- } else {
- ctx.Format = `container_id: {{.ID}}
- image: {{.Image}}
- command: {{.Command}}
- created_at: {{.CreatedAt}}
- status: {{.Status}}
- names: {{.Names}}
- labels: {{.Labels}}
- ports: {{.Ports}}
- `
- if ctx.Size {
- ctx.Format += `size: {{.Size}}
- `
- }
- }
- customFormat(ctx, containers)
- }
- func tableFormat(ctx Context, containers []types.Container) {
- ctx.Format = defaultTableFormat
- if ctx.Quiet {
- ctx.Format = defaultQuietFormat
- }
- customFormat(ctx, containers)
- }
|