inspect.go 1.1 KB

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