list.go 889 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // +build experimental
  2. package plugin
  3. import (
  4. "fmt"
  5. "text/tabwriter"
  6. "github.com/docker/docker/api/client"
  7. "github.com/docker/docker/cli"
  8. "github.com/spf13/cobra"
  9. "golang.org/x/net/context"
  10. )
  11. func newListCommand(dockerCli *client.DockerCli) *cobra.Command {
  12. cmd := &cobra.Command{
  13. Use: "ls",
  14. Short: "List plugins",
  15. Aliases: []string{"list"},
  16. Args: cli.NoArgs,
  17. RunE: func(cmd *cobra.Command, args []string) error {
  18. return runList(dockerCli)
  19. },
  20. }
  21. return cmd
  22. }
  23. func runList(dockerCli *client.DockerCli) error {
  24. plugins, err := dockerCli.Client().PluginList(context.Background())
  25. if err != nil {
  26. return err
  27. }
  28. w := tabwriter.NewWriter(dockerCli.Out(), 20, 1, 3, ' ', 0)
  29. fmt.Fprintf(w, "NAME \tTAG \tACTIVE")
  30. fmt.Fprintf(w, "\n")
  31. for _, p := range plugins {
  32. fmt.Fprintf(w, "%s\t%s\t%v\n", p.Name, p.Tag, p.Active)
  33. }
  34. w.Flush()
  35. return nil
  36. }