| 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}}" |
| ) |
| |
| type Context struct { |
| Output io.Writer |
| Format string |
| Size bool |
| Quiet bool |
| Trunc bool |
| } |
| |
| 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) |
| } |