mirror of https://github.com/docker/cli.git
fix docker info --format=json not outputting json format
The --format=json option was added for all inspect commands, but was not implemented
for "docker info". This patch implements the missing option.
Before this patch:
docker info --format=json
json
With this patch applied:
docker info --format=json
{"ID":"80c2f18a-2c88-4e4a-ba69-dca0eea59835","Containers":7,"ContainersRunning":"..."}
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 46234b82e2
)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
99124087e0
commit
2c1fde2239
|
@ -12,7 +12,9 @@ import (
|
||||||
pluginmanager "github.com/docker/cli/cli-plugins/manager"
|
pluginmanager "github.com/docker/cli/cli-plugins/manager"
|
||||||
"github.com/docker/cli/cli/command"
|
"github.com/docker/cli/cli/command"
|
||||||
"github.com/docker/cli/cli/command/completion"
|
"github.com/docker/cli/cli/command/completion"
|
||||||
|
"github.com/docker/cli/cli/command/formatter"
|
||||||
"github.com/docker/cli/cli/debug"
|
"github.com/docker/cli/cli/debug"
|
||||||
|
flagsHelper "github.com/docker/cli/cli/flags"
|
||||||
"github.com/docker/cli/templates"
|
"github.com/docker/cli/templates"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
"github.com/docker/docker/api/types/swarm"
|
"github.com/docker/docker/api/types/swarm"
|
||||||
|
@ -62,10 +64,7 @@ func NewInfoCommand(dockerCli command.Cli) *cobra.Command {
|
||||||
ValidArgsFunction: completion.NoComplete,
|
ValidArgsFunction: completion.NoComplete,
|
||||||
}
|
}
|
||||||
|
|
||||||
flags := cmd.Flags()
|
cmd.Flags().StringVarP(&opts.format, "format", "f", "", flagsHelper.InspectFormatHelp)
|
||||||
|
|
||||||
flags.StringVarP(&opts.format, "format", "f", "", "Format the output using the given Go template")
|
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,6 +506,10 @@ func printServerWarningsLegacy(dockerCli command.Cli, info types.Info) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func formatInfo(dockerCli command.Cli, info info, format string) error {
|
func formatInfo(dockerCli command.Cli, info info, format string) error {
|
||||||
|
if format == formatter.JSONFormatKey {
|
||||||
|
format = formatter.JSONFormat
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure slice/array fields render as `[]` not `null`
|
// Ensure slice/array fields render as `[]` not `null`
|
||||||
if info.ClientInfo != nil && info.ClientInfo.Plugins == nil {
|
if info.ClientInfo != nil && info.ClientInfo.Plugins == nil {
|
||||||
info.ClientInfo.Plugins = make([]pluginmanager.Plugin, 0)
|
info.ClientInfo.Plugins = make([]pluginmanager.Plugin, 0)
|
||||||
|
|
|
@ -396,6 +396,11 @@ func TestPrettyPrintInfo(t *testing.T) {
|
||||||
assert.NilError(t, formatInfo(cli, tc.dockerInfo, "{{json .}}"))
|
assert.NilError(t, formatInfo(cli, tc.dockerInfo, "{{json .}}"))
|
||||||
golden.Assert(t, cli.OutBuffer().String(), tc.jsonGolden+".json.golden")
|
golden.Assert(t, cli.OutBuffer().String(), tc.jsonGolden+".json.golden")
|
||||||
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
|
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
|
||||||
|
|
||||||
|
cli = test.NewFakeCli(&fakeClient{})
|
||||||
|
assert.NilError(t, formatInfo(cli, tc.dockerInfo, "json"))
|
||||||
|
golden.Assert(t, cli.OutBuffer().String(), tc.jsonGolden+".json.golden")
|
||||||
|
assert.Check(t, is.Equal("", cli.ErrBuffer().String()))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,9 +9,9 @@ Display system-wide information
|
||||||
|
|
||||||
### Options
|
### Options
|
||||||
|
|
||||||
| Name | Type | Default | Description |
|
| Name | Type | Default | Description |
|
||||||
|:---------------------------------------|:---------|:--------|:----------------------------------------------|
|
|:---------------------------------------|:---------|:--------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| [`-f`](#format), [`--format`](#format) | `string` | | Format the output using the given Go template |
|
| [`-f`](#format), [`--format`](#format) | `string` | | Format output using a custom template:<br>'json': Print in JSON format<br>'TEMPLATE': Print output using the given Go template.<br>Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates |
|
||||||
|
|
||||||
|
|
||||||
<!---MARKER_GEN_END-->
|
<!---MARKER_GEN_END-->
|
||||||
|
|
|
@ -9,9 +9,9 @@ Display system-wide information
|
||||||
|
|
||||||
### Options
|
### Options
|
||||||
|
|
||||||
| Name | Type | Default | Description |
|
| Name | Type | Default | Description |
|
||||||
|:-----------------|:---------|:--------|:----------------------------------------------|
|
|:-----------------|:---------|:--------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| `-f`, `--format` | `string` | | Format the output using the given Go template |
|
| `-f`, `--format` | `string` | | Format output using a custom template:<br>'json': Print in JSON format<br>'TEMPLATE': Print output using the given Go template.<br>Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates |
|
||||||
|
|
||||||
|
|
||||||
<!---MARKER_GEN_END-->
|
<!---MARKER_GEN_END-->
|
||||||
|
|
Loading…
Reference in New Issue