Add `--services` flag to `compose ps`
@@ -36,6 +36,7 @@ type psOptions struct {
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
+}
