From b9e2659a0584f629c37cb4deccf6d6c69f19861e Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 1 Jun 2022 12:44:41 +0200 Subject: [PATCH] info: update plugin section to show installed path This updates the pretty-print format of docker info to provide more details on installed plugins, to help users find where a specific plugin is installed (e.g. to update it, or to uninstall it). Before this patch: ```bash Client: Context: desktop-linux Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc., v0.8.2) compose: Docker Compose (Docker Inc., v2.4.1) sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0) scan: Docker Scan (Docker Inc., v0.17.0) Server: ... ``` With this patch applied: ```bash docker info Client: Context: desktop-linux Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.8.2 Path: /usr/local/lib/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.4.1 Path: /usr/local/lib/docker/cli-plugins/docker-compose sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.) Version: 0.6.0 Path: /usr/local/lib/docker/cli-plugins/docker-sbom scan: Docker Scan (Docker Inc.) Version: v0.17.0 Path: /usr/local/lib/docker/cli-plugins/docker-scan Server: ... ``` Signed-off-by: Sebastiaan van Stijn --- cli/command/system/info.go | 8 +++----- cli/command/system/testdata/docker-info-plugins.golden | 5 ++++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cli/command/system/info.go b/cli/command/system/info.go index 4853e1dba1..cc28226da9 100644 --- a/cli/command/system/info.go +++ b/cli/command/system/info.go @@ -180,11 +180,9 @@ func prettyPrintClientInfo(dockerCli command.Cli, info clientInfo) { fmt.Fprintln(dockerCli.Out(), " Plugins:") for _, p := range info.Plugins { if p.Err == nil { - var version string - if p.Version != "" { - version = ", " + p.Version - } - fmt.Fprintf(dockerCli.Out(), " %s: %s (%s%s)\n", p.Name, p.ShortDescription, p.Vendor, version) + fmt.Fprintf(dockerCli.Out(), " %s: %s (%s)\n", p.Name, p.ShortDescription, p.Vendor) + fprintlnNonEmpty(dockerCli.Out(), " Version: ", p.Version) + fprintlnNonEmpty(dockerCli.Out(), " Path: ", p.Path) } else { info.Warnings = append(info.Warnings, fmt.Sprintf("WARNING: Plugin %q is not valid: %s", p.Path, p.Err)) } diff --git a/cli/command/system/testdata/docker-info-plugins.golden b/cli/command/system/testdata/docker-info-plugins.golden index db066cc1ae..98c88d0ea0 100644 --- a/cli/command/system/testdata/docker-info-plugins.golden +++ b/cli/command/system/testdata/docker-info-plugins.golden @@ -2,8 +2,11 @@ Client: Context: default Debug Mode: false Plugins: - goodplugin: unit test is good (ACME Corp, 0.1.0) + goodplugin: unit test is good (ACME Corp) + Version: 0.1.0 + Path: /path/to/docker-goodplugin unversionedplugin: this plugin has no version (ACME Corp) + Path: /path/to/docker-unversionedplugin Server: Containers: 0