cli/command/plugin: deprecate NewFormat, FormatWrite

It's part of the presentation logic of the cli, and only used internally.
We can consider providing utilities for these, but better as part of
separate packages.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn
2025-08-21 14:41:18 +02:00
parent 123ef81f7d
commit bf47419852
3 changed files with 29 additions and 15 deletions

View File

@ -21,7 +21,14 @@ enabled: {{.Enabled}}
)
// NewFormat returns a Format for rendering using a plugin Context
//
// Deprecated: this function was only used internally and will be removed in the next release.
func NewFormat(source string, quiet bool) formatter.Format {
return newFormat(source, quiet)
}
// newFormat returns a Format for rendering using a pluginContext.
func newFormat(source string, quiet bool) formatter.Format {
switch source {
case formatter.TableFormatKey:
if quiet {
@ -38,10 +45,17 @@ func NewFormat(source string, quiet bool) formatter.Format {
}
// FormatWrite writes the context
func FormatWrite(ctx formatter.Context, plugins []*plugin.Plugin) error {
//
// Deprecated: this function was only used internally and will be removed in the next release.
func FormatWrite(fmtCtx formatter.Context, plugins []*plugin.Plugin) error {
return formatWrite(fmtCtx, plugins)
}
// formatWrite writes the context
func formatWrite(fmtCtx formatter.Context, plugins []*plugin.Plugin) error {
render := func(format func(subContext formatter.SubContext) error) error {
for _, p := range plugins {
pluginCtx := &pluginContext{trunc: ctx.Trunc, p: *p}
pluginCtx := &pluginContext{trunc: fmtCtx.Trunc, p: *p}
if err := format(pluginCtx); err != nil {
return err
}
@ -56,7 +70,7 @@ func FormatWrite(ctx formatter.Context, plugins []*plugin.Plugin) error {
"Enabled": enabledHeader,
"PluginReference": formatter.ImageHeader,
}
return ctx.Write(&pluginCtx, render)
return fmtCtx.Write(&pluginCtx, render)
}
type pluginContext struct {

View File

@ -86,7 +86,7 @@ func TestPluginContextWrite(t *testing.T) {
},
{
doc: "table format",
context: formatter.Context{Format: NewFormat("table", false)},
context: formatter.Context{Format: newFormat("table", false)},
expected: `ID NAME DESCRIPTION ENABLED
pluginID1 foobar_baz description 1 true
pluginID2 foobar_bar description 2 false
@ -94,14 +94,14 @@ pluginID2 foobar_bar description 2 false
},
{
doc: "table format, quiet",
context: formatter.Context{Format: NewFormat("table", true)},
context: formatter.Context{Format: newFormat("table", true)},
expected: `pluginID1
pluginID2
`,
},
{
doc: "table format name col",
context: formatter.Context{Format: NewFormat("table {{.Name}}", false)},
context: formatter.Context{Format: newFormat("table {{.Name}}", false)},
expected: `NAME
foobar_baz
foobar_bar
@ -109,7 +109,7 @@ foobar_bar
},
{
doc: "table format name col, quiet",
context: formatter.Context{Format: NewFormat("table {{.Name}}", true)},
context: formatter.Context{Format: newFormat("table {{.Name}}", true)},
expected: `NAME
foobar_baz
foobar_bar
@ -117,7 +117,7 @@ foobar_bar
},
{
doc: "raw format",
context: formatter.Context{Format: NewFormat("raw", false)},
context: formatter.Context{Format: newFormat("raw", false)},
expected: `plugin_id: pluginID1
name: foobar_baz
description: description 1
@ -132,14 +132,14 @@ enabled: false
},
{
doc: "raw format, quiet",
context: formatter.Context{Format: NewFormat("raw", true)},
context: formatter.Context{Format: newFormat("raw", true)},
expected: `plugin_id: pluginID1
plugin_id: pluginID2
`,
},
{
doc: "custom format",
context: formatter.Context{Format: NewFormat("{{.Name}}", false)},
context: formatter.Context{Format: newFormat("{{.Name}}", false)},
expected: `foobar_baz
foobar_bar
`,
@ -156,7 +156,7 @@ foobar_bar
var out bytes.Buffer
tc.context.Output = &out
err := FormatWrite(tc.context, plugins)
err := formatWrite(tc.context, plugins)
if err != nil {
assert.Error(t, err, tc.expected)
} else {
@ -177,7 +177,7 @@ func TestPluginContextWriteJSON(t *testing.T) {
}
out := bytes.NewBufferString("")
err := FormatWrite(formatter.Context{Format: "{{json .}}", Output: out}, plugins)
err := formatWrite(formatter.Context{Format: "{{json .}}", Output: out}, plugins)
if err != nil {
t.Fatal(err)
}
@ -196,7 +196,7 @@ func TestPluginContextWriteJSONField(t *testing.T) {
{ID: "pluginID2", Name: "foobar_bar"},
}
out := bytes.NewBufferString("")
err := FormatWrite(formatter.Context{Format: "{{json .ID}}", Output: out}, plugins)
err := formatWrite(formatter.Context{Format: "{{json .ID}}", Output: out}, plugins)
if err != nil {
t.Fatal(err)
}

View File

@ -66,8 +66,8 @@ func runList(ctx context.Context, dockerCli command.Cli, options listOptions) er
pluginsCtx := formatter.Context{
Output: dockerCli.Out(),
Format: NewFormat(format, options.quiet),
Format: newFormat(format, options.quiet),
Trunc: !options.noTrunc,
}
return FormatWrite(pluginsCtx, plugins)
return formatWrite(pluginsCtx, plugins)
}