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  }