github.com/portworx/docker@v1.12.1/api/client/plugin/inspect.go (about)

     1  // +build experimental
     2  
     3  package plugin
     4  
     5  import (
     6  	"encoding/json"
     7  	"fmt"
     8  
     9  	"github.com/docker/docker/api/client"
    10  	"github.com/docker/docker/cli"
    11  	"github.com/docker/docker/reference"
    12  	"github.com/spf13/cobra"
    13  	"golang.org/x/net/context"
    14  )
    15  
    16  func newInspectCommand(dockerCli *client.DockerCli) *cobra.Command {
    17  	cmd := &cobra.Command{
    18  		Use:   "inspect PLUGIN",
    19  		Short: "Inspect a plugin",
    20  		Args:  cli.ExactArgs(1),
    21  		RunE: func(cmd *cobra.Command, args []string) error {
    22  			return runInspect(dockerCli, args[0])
    23  		},
    24  	}
    25  
    26  	return cmd
    27  }
    28  
    29  func runInspect(dockerCli *client.DockerCli, name string) error {
    30  	named, err := reference.ParseNamed(name) // FIXME: validate
    31  	if err != nil {
    32  		return err
    33  	}
    34  	if reference.IsNameOnly(named) {
    35  		named = reference.WithDefaultTag(named)
    36  	}
    37  	ref, ok := named.(reference.NamedTagged)
    38  	if !ok {
    39  		return fmt.Errorf("invalid name: %s", named.String())
    40  	}
    41  	p, err := dockerCli.Client().PluginInspect(context.Background(), ref.String())
    42  	if err != nil {
    43  		return err
    44  	}
    45  
    46  	b, err := json.MarshalIndent(p, "", "\t")
    47  	if err != nil {
    48  		return err
    49  	}
    50  	_, err = dockerCli.Out().Write(b)
    51  	return err
    52  }