github.com/AliyunContainerService/cli@v0.0.0-20181009023821-814ced4b30d0/cli/command/stack/services.go (about) 1 package stack 2 3 import ( 4 "github.com/docker/cli/cli" 5 "github.com/docker/cli/cli/command" 6 "github.com/docker/cli/cli/command/stack/kubernetes" 7 "github.com/docker/cli/cli/command/stack/options" 8 "github.com/docker/cli/cli/command/stack/swarm" 9 cliopts "github.com/docker/cli/opts" 10 "github.com/spf13/cobra" 11 ) 12 13 func newServicesCommand(dockerCli command.Cli, common *commonOptions) *cobra.Command { 14 opts := options.Services{Filter: cliopts.NewFilterOpt()} 15 16 cmd := &cobra.Command{ 17 Use: "services [OPTIONS] STACK", 18 Short: "List the services in the stack", 19 Args: cli.ExactArgs(1), 20 RunE: func(cmd *cobra.Command, args []string) error { 21 opts.Namespace = args[0] 22 if err := validateStackName(opts.Namespace); err != nil { 23 return err 24 } 25 26 switch { 27 case common.orchestrator.HasAll(): 28 return errUnsupportedAllOrchestrator 29 case common.orchestrator.HasKubernetes(): 30 kli, err := kubernetes.WrapCli(dockerCli, kubernetes.NewOptions(cmd.Flags(), common.orchestrator)) 31 if err != nil { 32 return err 33 } 34 return kubernetes.RunServices(kli, opts) 35 default: 36 return swarm.RunServices(dockerCli, opts) 37 } 38 }, 39 } 40 flags := cmd.Flags() 41 flags.BoolVarP(&opts.Quiet, "quiet", "q", false, "Only display IDs") 42 flags.StringVar(&opts.Format, "format", "", "Pretty-print services using a Go template") 43 flags.VarP(&opts.Filter, "filter", "f", "Filter output based on conditions provided") 44 kubernetes.AddNamespaceFlag(flags) 45 return cmd 46 }