浏览代码

Merge pull request #1321 from aiordache/local_ps_services

Add `--services` flag to `compose ps`
Nicolas De loof 4 年之前
父节点
当前提交
598f7bba1f
共有 1 个文件被更改,包括 25 次插入3 次删除
  1. 25 3
      cli/cmd/compose/ps.go

+ 25 - 3
cli/cmd/compose/ps.go

@@ -33,9 +33,10 @@ import (
 
 type psOptions struct {
 	*projectOptions
-	Format string
-	All    bool
-	Quiet  bool
+	Format   string
+	All      bool
+	Quiet    bool
+	Services bool
 }
 
 func psCommand(p *projectOptions) *cobra.Command {
@@ -51,6 +52,7 @@ func psCommand(p *projectOptions) *cobra.Command {
 	}
 	psCmd.Flags().StringVar(&opts.Format, "format", "pretty", "Format the output. Values: [pretty | json].")
 	psCmd.Flags().BoolVarP(&opts.Quiet, "quiet", "q", false, "Only display IDs")
+	psCmd.Flags().BoolVar(&opts.Services, "services", false, "Display services")
 	psCmd.Flags().BoolVarP(&opts.All, "all", "a", false, "Show all stopped containers (including those created by the run command)")
 	return psCmd
 }
@@ -71,6 +73,17 @@ func runPs(ctx context.Context, opts psOptions) error {
 	if err != nil {
 		return err
 	}
+
+	if opts.Services {
+		services := []string{}
+		for _, s := range containers {
+			if !contains(services, s.Service) {
+				services = append(services, s.Service)
+			}
+		}
+		fmt.Println(strings.Join(services, "\n"))
+		return nil
+	}
 	if opts.Quiet {
 		for _, s := range containers {
 			fmt.Println(s.ID)
@@ -102,3 +115,12 @@ func runPs(ctx context.Context, opts psOptions) error {
 		},
 		"NAME", "SERVICE", "STATUS", "PORTS")
 }
+
+func contains(slice []string, item string) bool {
+	for _, v := range slice {
+		if v == item {
+			return true
+		}
+	}
+	return false
+}