github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/service/cmd.go (about) 1 package service 2 3 import ( 4 "github.com/docker/cli/cli" 5 "github.com/docker/cli/cli/command" 6 "github.com/docker/cli/cli/command/completion" 7 "github.com/docker/docker/api/types" 8 "github.com/spf13/cobra" 9 ) 10 11 // NewServiceCommand returns a cobra command for `service` subcommands 12 func NewServiceCommand(dockerCli command.Cli) *cobra.Command { 13 cmd := &cobra.Command{ 14 Use: "service", 15 Short: "Manage Swarm services", 16 Args: cli.NoArgs, 17 RunE: command.ShowHelp(dockerCli.Err()), 18 Annotations: map[string]string{ 19 "version": "1.24", 20 "swarm": "manager", 21 }, 22 } 23 cmd.AddCommand( 24 newCreateCommand(dockerCli), 25 newInspectCommand(dockerCli), 26 newPsCommand(dockerCli), 27 newListCommand(dockerCli), 28 newRemoveCommand(dockerCli), 29 newScaleCommand(dockerCli), 30 newUpdateCommand(dockerCli), 31 newLogsCommand(dockerCli), 32 newRollbackCommand(dockerCli), 33 ) 34 return cmd 35 } 36 37 // CompletionFn offers completion for swarm services 38 func CompletionFn(dockerCli command.Cli) completion.ValidArgsFn { 39 return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { 40 list, err := dockerCli.Client().ServiceList(cmd.Context(), types.ServiceListOptions{}) 41 if err != nil { 42 return nil, cobra.ShellCompDirectiveError 43 } 44 var names []string 45 for _, service := range list { 46 names = append(names, service.ID) 47 } 48 return names, cobra.ShellCompDirectiveNoFileComp 49 } 50 }