set.go 1008 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // +build experimental
  2. package plugin
  3. import (
  4. "fmt"
  5. "golang.org/x/net/context"
  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. )
  11. func newSetCommand(dockerCli *client.DockerCli) *cobra.Command {
  12. cmd := &cobra.Command{
  13. Use: "set PLUGIN key1=value1 [key2=value2...]",
  14. Short: "Change settings for a plugin",
  15. Args: cli.RequiresMinArgs(2),
  16. RunE: func(cmd *cobra.Command, args []string) error {
  17. return runSet(dockerCli, args[0], args[1:])
  18. },
  19. }
  20. return cmd
  21. }
  22. func runSet(dockerCli *client.DockerCli, name string, args []string) error {
  23. named, err := reference.ParseNamed(name) // FIXME: validate
  24. if err != nil {
  25. return err
  26. }
  27. if reference.IsNameOnly(named) {
  28. named = reference.WithDefaultTag(named)
  29. }
  30. ref, ok := named.(reference.NamedTagged)
  31. if !ok {
  32. return fmt.Errorf("invalid name: %s", named.String())
  33. }
  34. return dockerCli.Client().PluginSet(context.Background(), ref.String(), args)
  35. }