mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
|
package formatter
|
||
|
|
||
|
import "github.com/docker/docker/api/types"
|
||
|
|
||
|
const (
|
||
|
defaultCheckpointFormat = "table {{.Name}}"
|
||
|
|
||
|
checkpointNameHeader = "CHECKPOINT NAME"
|
||
|
)
|
||
|
|
||
|
// NewCheckpointFormat returns a format for use with a checkpoint Context
|
||
|
func NewCheckpointFormat(source string) Format {
|
||
|
switch source {
|
||
|
case TableFormatKey:
|
||
|
return defaultCheckpointFormat
|
||
|
}
|
||
|
return Format(source)
|
||
|
}
|
||
|
|
||
|
// CheckpointWrite writes formatted checkpoints using the Context
|
||
|
func CheckpointWrite(ctx Context, checkpoints []types.Checkpoint) error {
|
||
|
render := func(format func(subContext subContext) error) error {
|
||
|
for _, checkpoint := range checkpoints {
|
||
|
if err := format(&checkpointContext{c: checkpoint}); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
return ctx.Write(newCheckpointContext(), render)
|
||
|
}
|
||
|
|
||
|
type checkpointContext struct {
|
||
|
HeaderContext
|
||
|
c types.Checkpoint
|
||
|
}
|
||
|
|
||
|
func newCheckpointContext() *checkpointContext {
|
||
|
cpCtx := checkpointContext{}
|
||
|
cpCtx.header = volumeHeaderContext{
|
||
|
"Name": checkpointNameHeader,
|
||
|
}
|
||
|
return &cpCtx
|
||
|
}
|
||
|
|
||
|
func (c *checkpointContext) MarshalJSON() ([]byte, error) {
|
||
|
return marshalJSON(c)
|
||
|
}
|
||
|
|
||
|
func (c *checkpointContext) Name() string {
|
||
|
return c.c.Name
|
||
|
}
|