vmware-tanzu / tanzu-cli

The Tanzu Core CLI project provides the core functionality of the Tanzu CLI. The CLI is based on a plugin architecture where CLI command functionality can be delivered through independently developed plugin binaries
Apache License 2.0
35 stars 22 forks source link

"plugin search" should provide a means to list the versions available for a plugin #134

Closed marckhouzam closed 1 year ago

marckhouzam commented 1 year ago

Describe the feature request

The plugin search command is used to find available plugins that a user can install. The output of the command includes the latest version available. However there is currently no way to know if and which older versions of a plugin are also available for installation.

Using a specific version of a plugin can be important as such a version can be required by the currently installed Tanzu product.

On the other hand, we expect users to make use of plugin groups to install the proper versions of their plugins and very rarely have to manually install an older version found through plugin search. Therefore, the ability to list all available versions of a plugin is more for completeness than for common usage.

The next section shows different options I have considered. As presented below, I prefer option 1 for the following reasons:

  1. option 4 and 5 have an awkward syntax a flag name because plugin search cannot take a plugin name as an argument as we plan to use the argument as a filter
  2. option 3 is too verbose and repetitive
  3. option 2 is like option 1 but has longer lines because it includes the description of the plugin. Since the description is included in the standard output of plugin search I don't find it is necessary to include it in the version output and helps avoid too much line wrapping.

Please see the "Further alternative" section for an slightly more involved alternative which I'm actually leaning towards.

Describe alternative(s) you've considered

Reminder of the current basic command:

$ tz plugin search
  NAME                DESCRIPTION                  TARGET           LATEST
  isolated-cluster    Desc for isolated-cluster    global           v9.9.9
  pinniped-auth       Desc for pinniped-auth       global           v9.9.9
  cluster             Desc for cluster             kubernetes       v9.9.9
  feature             Desc for feature             kubernetes       v9.9.9
  kubernetes-release  Desc for kubernetes-release  kubernetes       v9.9.9
  management-cluster  Desc for management-cluster  kubernetes       v9.9.9
  package             Desc for package             kubernetes       v9.9.9
  secret              Desc for secret              kubernetes       v9.9.9
  telemetry           Desc for telemetry           kubernetes       v9.9.9
  account             Desc for account             mission-control  v9.9.9
  apply               Desc for apply               mission-control  v9.9.9
  audit               Desc for audit               mission-control  v9.9.9
  cluster             Desc for cluster             mission-control  v9.9.9
  clustergroup        Desc for clustergroup        mission-control  v9.9.9

Option 1: List all versions in a list, no description field to provide more space

$ tz plugin search --list-versions
  NAME                TARGET           AVAILABLE VERSIONS
  isolated-cluster    global           v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  pinniped-auth       global           v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  cluster             kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  feature             kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  kubernetes-release  kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  management-cluster  kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  package             kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  secret              kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  telemetry           kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  account             mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  apply               mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  audit               mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  cluster             mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  clustergroup        mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9

Option 2: Option 1 but with description field

$ tz plugin search --list-versions
  NAME                DESCRIPTION                  TARGET           AVAILABLE VERSIONS
  isolated-cluster    Desc for isolated-cluster    global           v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  pinniped-auth       Desc for pinniped-auth       global           v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  cluster             Desc for cluster             kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  feature             Desc for feature             kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  kubernetes-release  Desc for kubernetes-release  kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  management-cluster  Desc for management-cluster  kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  package             Desc for package             kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  secret              Desc for secret              kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  telemetry           Desc for telemetry           kubernetes       v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  account             Desc for account             mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  apply               Desc for apply               mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  audit               Desc for audit               mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  cluster             Desc for cluster             mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9
  clustergroup        Desc for clustergroup        mission-control  v0.0.1 v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9

Option 3: One version per line

$ tz plugin search --list-versions
  NAME                DESCRIPTION                  TARGET           LATEST
  isolated-cluster    Desc for isolated-cluster    global          v0.0.1
  isolated-cluster    Desc for isolated-cluster    global          v1.1.1
  isolated-cluster    Desc for isolated-cluster    global          v2.2.2
  isolated-cluster    Desc for isolated-cluster    global          v3.3.3
  isolated-cluster    Desc for isolated-cluster    global          v4.4.4
  isolated-cluster    Desc for isolated-cluster    global          v5.5.5
  isolated-cluster    Desc for isolated-cluster    global          v6.6.6
  isolated-cluster    Desc for isolated-cluster    global          v7.7.7
  isolated-cluster    Desc for isolated-cluster    global          v8.8.8
  isolated-cluster    Desc for isolated-cluster    global          v9.9.9
  pinniped-auth       Desc for pinniped-auth       global          v0.0.1
  pinniped-auth       Desc for pinniped-auth       global          v1.1.1
  pinniped-auth       Desc for pinniped-auth       global          v2.2.2
  pinniped-auth       Desc for pinniped-auth       global          v3.3.3
  pinniped-auth       Desc for pinniped-auth       global          v4.4.4
  pinniped-auth       Desc for pinniped-auth       global          v5.5.5
  pinniped-auth       Desc for pinniped-auth       global          v6.6.6
  pinniped-auth       Desc for pinniped-auth       global          v7.7.7
  pinniped-auth       Desc for pinniped-auth       global          v8.8.8
  pinniped-auth       Desc for pinniped-auth       global          v9.9.9
  cluster             Desc for cluster             kubernetes      v0.0.1
  cluster             Desc for cluster             kubernetes      v1.1.1
  cluster             Desc for cluster             kubernetes      v2.2.2
  cluster             Desc for cluster             kubernetes      v3.3.3
  cluster             Desc for cluster             kubernetes      v4.4.4
  cluster             Desc for cluster             kubernetes      v5.5.5
  cluster             Desc for cluster             kubernetes      v6.6.6
  cluster             Desc for cluster             kubernetes      v7.7.7
  cluster             Desc for cluster             kubernetes      v8.8.8
  cluster             Desc for cluster             kubernetes      v9.9.9
  feature             Desc for feature             kubernetes      v0.0.1
  feature             Desc for feature             kubernetes      v1.1.1
  feature             Desc for feature             kubernetes      v2.2.2
  feature             Desc for feature             kubernetes      v3.3.3
  feature             Desc for feature             kubernetes      v4.4.4
  feature             Desc for feature             kubernetes      v5.5.5
  feature             Desc for feature             kubernetes      v6.6.6
  feature             Desc for feature             kubernetes      v7.7.7
  feature             Desc for feature             kubernetes      v8.8.8
  feature             Desc for feature             kubernetes      v9.9.9
  kubernetes-release  Desc for kubernetes-release  kubernetes      v0.0.1
  kubernetes-release  Desc for kubernetes-release  kubernetes      v1.1.1
  kubernetes-release  Desc for kubernetes-release  kubernetes      v2.2.2
  kubernetes-release  Desc for kubernetes-release  kubernetes      v3.3.3
  kubernetes-release  Desc for kubernetes-release  kubernetes      v4.4.4
  kubernetes-release  Desc for kubernetes-release  kubernetes      v5.5.5
  kubernetes-release  Desc for kubernetes-release  kubernetes      v6.6.6
  kubernetes-release  Desc for kubernetes-release  kubernetes      v7.7.7
  kubernetes-release  Desc for kubernetes-release  kubernetes      v8.8.8
  kubernetes-release  Desc for kubernetes-release  kubernetes      v9.9.9
  management-cluster  Desc for management-cluster  kubernetes      v0.0.1
  management-cluster  Desc for management-cluster  kubernetes      v1.1.1
  management-cluster  Desc for management-cluster  kubernetes      v2.2.2
  management-cluster  Desc for management-cluster  kubernetes      v3.3.3
  management-cluster  Desc for management-cluster  kubernetes      v4.4.4
  management-cluster  Desc for management-cluster  kubernetes      v5.5.5
  management-cluster  Desc for management-cluster  kubernetes      v6.6.6
  management-cluster  Desc for management-cluster  kubernetes      v7.7.7
  management-cluster  Desc for management-cluster  kubernetes      v8.8.8
  management-cluster  Desc for management-cluster  kubernetes      v9.9.9
  package             Desc for package             kubernetes      v0.0.1
  package             Desc for package             kubernetes      v1.1.1
  package             Desc for package             kubernetes      v2.2.2
  package             Desc for package             kubernetes      v3.3.3
  package             Desc for package             kubernetes      v4.4.4
  package             Desc for package             kubernetes      v5.5.5
  package             Desc for package             kubernetes      v6.6.6
  package             Desc for package             kubernetes      v7.7.7
  package             Desc for package             kubernetes      v8.8.8
  package             Desc for package             kubernetes      v9.9.9
  secret              Desc for secret              kubernetes      v0.0.1
  secret              Desc for secret              kubernetes      v1.1.1
  secret              Desc for secret              kubernetes      v2.2.2
  secret              Desc for secret              kubernetes      v3.3.3
  secret              Desc for secret              kubernetes      v4.4.4
  secret              Desc for secret              kubernetes      v5.5.5
  secret              Desc for secret              kubernetes      v6.6.6
  secret              Desc for secret              kubernetes      v7.7.7
  secret              Desc for secret              kubernetes      v8.8.8
  secret              Desc for secret              kubernetes      v9.9.9
  telemetry           Desc for telemetry           kubernetes      v0.0.1
  telemetry           Desc for telemetry           kubernetes      v1.1.1
  telemetry           Desc for telemetry           kubernetes      v2.2.2
  telemetry           Desc for telemetry           kubernetes      v3.3.3
  telemetry           Desc for telemetry           kubernetes      v4.4.4
  telemetry           Desc for telemetry           kubernetes      v5.5.5
  telemetry           Desc for telemetry           kubernetes      v6.6.6
  telemetry           Desc for telemetry           kubernetes      v7.7.7
  telemetry           Desc for telemetry           kubernetes      v8.8.8
  telemetry           Desc for telemetry           kubernetes      v9.9.9
  account             Desc for account             mission-control v0.0.1
  account             Desc for account             mission-control v1.1.1
  account             Desc for account             mission-control v2.2.2
  account             Desc for account             mission-control v3.3.3
  account             Desc for account             mission-control v4.4.4
  account             Desc for account             mission-control v5.5.5
  account             Desc for account             mission-control v6.6.6
  account             Desc for account             mission-control v7.7.7
  account             Desc for account             mission-control v8.8.8
  account             Desc for account             mission-control v9.9.9
  apply               Desc for apply               mission-control v0.0.1
  apply               Desc for apply               mission-control v1.1.1
  apply               Desc for apply               mission-control v2.2.2
  apply               Desc for apply               mission-control v3.3.3
  apply               Desc for apply               mission-control v4.4.4
  apply               Desc for apply               mission-control v5.5.5
  apply               Desc for apply               mission-control v6.6.6
  apply               Desc for apply               mission-control v7.7.7
  apply               Desc for apply               mission-control v8.8.8
  apply               Desc for apply               mission-control v9.9.9
  audit               Desc for audit               mission-control v0.0.1
  audit               Desc for audit               mission-control v1.1.1
  audit               Desc for audit               mission-control v2.2.2
  audit               Desc for audit               mission-control v3.3.3
  audit               Desc for audit               mission-control v4.4.4
  audit               Desc for audit               mission-control v5.5.5
  audit               Desc for audit               mission-control v6.6.6
  audit               Desc for audit               mission-control v7.7.7
  audit               Desc for audit               mission-control v8.8.8
  audit               Desc for audit               mission-control v9.9.9
  cluster             Desc for cluster             mission-control v0.0.1
  cluster             Desc for cluster             mission-control v1.1.1
  cluster             Desc for cluster             mission-control v2.2.2
  cluster             Desc for cluster             mission-control v3.3.3
  cluster             Desc for cluster             mission-control v4.4.4
  cluster             Desc for cluster             mission-control v5.5.5
  cluster             Desc for cluster             mission-control v6.6.6
  cluster             Desc for cluster             mission-control v7.7.7
  cluster             Desc for cluster             mission-control v8.8.8
  cluster             Desc for cluster             mission-control v9.9.9
  clustergroup        Desc for clustergroup        mission-control v0.0.1
  clustergroup        Desc for clustergroup        mission-control v1.1.1
  clustergroup        Desc for clustergroup        mission-control v2.2.2
  clustergroup        Desc for clustergroup        mission-control v3.3.3
  clustergroup        Desc for clustergroup        mission-control v4.4.4
  clustergroup        Desc for clustergroup        mission-control v5.5.5
  clustergroup        Desc for clustergroup        mission-control v6.6.6
  clustergroup        Desc for clustergroup        mission-control v7.7.7
  clustergroup        Desc for clustergroup        mission-control v8.8.8
  clustergroup        Desc for clustergroup        mission-control v9.9.9

Option 4: One plugin at a time using a different flag and argument

$ tz plugin search --versions-for cluster --target kubernetes
v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9

Option 4.1: Option 4 in column format

$ tz plugin search --versions-for cluster --target kubernetes
v0.0.1
v1.1.1
v2.2.2
v3.3.3
v4.4.4
v5.5.5
v6.6.6
v7.7.7
v8.8.8
v9.9.9

Option 5: Like option 4 but more future-proof due to more generic flag name

$ tz plugin search --details-for cluster --target kubernetes
Plugin 'cluster' for target 'kubernetes':
VERSIONS
v0.0.1
v1.1.1
v2.2.2
v3.3.3
v4.4.4
v5.5.5
v6.6.6
v7.7.7
v8.8.8
v9.9.9

Option 5 can evolve to things like:

$ tz plugin search --details-for cluster --target kubernetes
Name: cluster
Target: kubernetes
Vendor: vmware
Publisher: tkg
Versions: v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9

Further alternative

Note that we could take a slightly different approach if we allow tanzu plugin search to take a plugin name as an argument. This would have multiple benefits (examples follow):

  1. allow a user to more easily get versions (actually all details) about a specific plugin
  2. allow a user to search by name for a specific plugin that they are looking for
  3. avoid needing a --list-versions flag, which would be replaced by specifying the plugin name

Note that a filtering feature can still be provided but using a flag -f/--filter. Examples of such an approach:

Basic command (unchanged):

$ tz plugin search
  NAME                DESCRIPTION                  TARGET           LATEST
  isolated-cluster    Desc for isolated-cluster    global           v9.9.9
  pinniped-auth       Desc for pinniped-auth       global           v9.9.9
  cluster             Desc for cluster             kubernetes       v9.9.9
  feature             Desc for feature             kubernetes       v9.9.9
  kubernetes-release  Desc for kubernetes-release  kubernetes       v9.9.9
  management-cluster  Desc for management-cluster  kubernetes       v9.9.9
  package             Desc for package             kubernetes       v9.9.9
  secret              Desc for secret              kubernetes       v9.9.9
  telemetry           Desc for telemetry           kubernetes       v9.9.9
  account             Desc for account             mission-control  v9.9.9
  apply               Desc for apply               mission-control  v9.9.9
  audit               Desc for audit               mission-control  v9.9.9
  cluster             Desc for cluster             mission-control  v9.9.9
  clustergroup        Desc for clustergroup        mission-control  v9.9.9

Details of a single plugin:

# Notice the need to sometimes specify the target if a plugin exists for multiple targets
$ tz plugin search cluster
[x] : unable to uniquely identify plugin 'cluster'. Please specify correct Target(kubernetes[k8s]/mission-control[tmc]) of the plugin with `--target` flag

# Notice that we no longer need a `--list-versions` flag to get the versions
$ tz plugin search cluster --target kubernetes
Name: cluster
Target: kubernetes
Vendor: vmware
Publisher: tkg
Versions: v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9

Using a filter

$ tz plugin search --filter cluster
  NAME                DESCRIPTION                  TARGET           LATEST
  isolated-cluster    Desc for isolated-cluster    global           v9.9.9
  cluster             Desc for cluster             kubernetes       v9.9.9
  management-cluster  Desc for management-cluster  kubernetes       v9.9.9
  cluster             Desc for cluster             mission-control  v9.9.9
  clustergroup        Desc for clustergroup        mission-control  v9.9.9
marckhouzam commented 1 year ago

I've prototyped Option 1 with the real table printer and I'm not impressed with what I get.

Using a comma and a space as a separator. Notice the line-wrapping that happens when the column would pass 80 characters. From what I can see, this wrapping is not configurable at the moment, but we could add that configuration option to the tanzu-plugin-runtime API.

$ tz plugin search --list-versions
  NAME                TARGET           AVAILABLE VERSIONS
  builder             global           v0.1.0-dev-8-g6087ea00, v0.80.2, v0.81.1, v0.82.5-alpha.0, v0.89.1, v0.89.2,
                                       v0.89.3, v0.89.4, v0.89.5, v0.89.6, v0.89.7, v0.89.8, v0.90.0-alpha.0
  isolated-cluster    global           v0.28.0, v0.28.1
  pinniped-auth       global           v0.25.0, v0.25.4, v0.28.0, v0.28.1
  test                global           v0.1.0-dev-8-g6087ea00, v0.80.2, v0.81.1, v0.82.5-alpha.0, v0.89.1,
                                       v0.90.0-alpha.0
  accelerator         kubernetes       v1.4.0
  apps                kubernetes       v0.10.0
  cluster             kubernetes       v0.25.0, v0.25.4, v0.28.0, v0.28.1
  feature             kubernetes       v0.25.0, v0.25.4, v0.28.0, v0.28.1
  insight             kubernetes       v1.4.2
  kubernetes-release  kubernetes       v0.25.0, v0.25.4, v0.28.0, v0.28.1
  management-cluster  kubernetes       v0.25.0, v0.25.4, v0.28.0, v0.28.1
  package             kubernetes       v0.25.0, v0.25.4, v0.28.0, v0.28.1
  secret              kubernetes       v0.25.0, v0.25.4, v0.28.0, v0.28.1
  services            kubernetes       v0.5.0
  telemetry           kubernetes       v0.25.0, v0.25.4, v0.28.0, v0.28.1
  account             mission-control  v0.0.1
  apply               mission-control  v0.0.1
  audit               mission-control  v0.0.1

Although I find the wrapping to look pretty good, it will make greping for a specific plugin and its version much more difficult.

If we improve the API for table printing and turn off wrapping, we don't get a poor experience because the table printer makes every line have the same length, by padding it with spaces. This means that if one line wraps in the terminal, then all other lines will also wrap but using empty spaces, which makes it look poorly in the terminal. Here is a screenshot, as I cannot reproduce the wrapping in github text: Screenshot 2023-04-11 at 18 35 02

anujc25 commented 1 year ago

I would like to propose a variation of option-5 here where we use --name cluster instead of --details-for cluster and use the --detailed flag to see the details about all available plugins. Note I have proposed that --name is required when using the --detailed flag but I am not completely bound to it as well.

$ tz plugin search --name cluster --detailed

Name: cluster
Target: kubernetes
Description: Desc for cluster
Vendor: vmware
Publisher: tkg
Latest: v9.9.9
Versions: v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9

Name: cluster
Target: mission-control
Description: Desc for cluster
Vendor: vmware
Publisher: tmc
Latest: v0.0.3
Versions: v0.0.1 v0.0.2 v0.0.3
$ tz plugin search --name cluster --target kubernetes --detailed

Name: cluster
Target: kubernetes
Description: Desc for cluster
Vendor: vmware
Publisher: tkg
Latest: v9.9.9
Versions: v1.1.1 v2.2.2 v3.3.3 v4.4.4 v5.5.5 v6.6.6 v7.7.7 v8.8.8 v9.9.9

When we need to get machine-readable output with -o yaml:

$ tz plugin search --name cluster --target kubernetes --detailed -o yaml

- name: cluster
  target: kubernetes
  description: Desc for cluster
  vendor: vmware
  publisher: tkg
  latest: v9.9.9
  versions:  # (When the user provides --detailed flag, this is an added key user sees in yaml output, other keys remains the same)
    - v1.1.1
    - v2.2.2
    - v3.3.3
    - v4.4.4
    - v5.5.5
    - v6.6.6
    - v7.7.7
    - v8.8.8
    - v9.9.9
$ tz plugin search --detailed

x `--detailed` view is only available with `--name` flag.