Skip to content

Commit

Permalink
Introduce ps --orphans so user can include/exclude services not decla…
Browse files Browse the repository at this point in the history
…red by project

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
  • Loading branch information
ndeloof committed Nov 23, 2023
1 parent 8c0c5cb commit caa0cbb
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
15 changes: 11 additions & 4 deletions cmd/compose/ps.go
Expand Up @@ -42,6 +42,7 @@ type psOptions struct {
Filter string
Status []string
noTrunc bool
Orphans bool
}

func (p *psOptions) parseFilter() error {
Expand Down Expand Up @@ -84,6 +85,7 @@ func psCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) *c
flags.StringArrayVar(&opts.Status, "status", []string{}, "Filter services by status. Values: [paused | restarting | removing | running | dead | created | exited]")
flags.BoolVarP(&opts.Quiet, "quiet", "q", false, "Only display IDs")
flags.BoolVar(&opts.Services, "services", false, "Display services")
flags.BoolVar(&opts.Orphans, "orphans", true, "Include orphaned services (not declared by project)")
flags.BoolVarP(&opts.All, "all", "a", false, "Show all stopped containers (including those created by the run command)")
flags.BoolVar(&opts.noTrunc, "no-trunc", false, "Don't truncate output")
return psCmd
Expand All @@ -95,12 +97,17 @@ func runPs(ctx context.Context, dockerCli command.Cli, backend api.Service, serv
return err
}

if project != nil && len(services) > 0 {
if project != nil {
names := project.ServiceNames()
for _, service := range services {
if !utils.StringContains(names, service) {
return fmt.Errorf("no such service: %s", service)
if len(services) > 0 {
for _, service := range services {
if !utils.StringContains(names, service) {
return fmt.Errorf("no such service: %s", service)
}
}
} else if !opts.Orphans {
// until user asks to list orphaned services, we only include those declared in project
services = names
}
}

Expand Down
1 change: 1 addition & 0 deletions docs/reference/compose_ps.md
Expand Up @@ -12,6 +12,7 @@ List containers
| [`--filter`](#filter) | `string` | | Filter services by a property (supported filters: status). |
| [`--format`](#format) | `string` | `table` | Format output using a custom template:<br>'table': Print output in table format with column headers (default)<br>'table TEMPLATE': Print output in table format using the given Go template<br>'json': Print in JSON format<br>'TEMPLATE': Print output using the given Go template.<br>Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates |
| `--no-trunc` | | | Don't truncate output |
| `--orphans` | | | Include orphaned services (not declared by project) |
| `-q`, `--quiet` | | | Only display IDs |
| `--services` | | | Display services |
| [`--status`](#status) | `stringArray` | | Filter services by status. Values: [paused \| restarting \| removing \| running \| dead \| created \| exited] |
Expand Down
10 changes: 10 additions & 0 deletions docs/reference/docker_compose_ps.yaml
Expand Up @@ -70,6 +70,16 @@ options:
experimentalcli: false
kubernetes: false
swarm: false
- option: orphans
value_type: bool
default_value: "true"
description: Include orphaned services (not declared by project)
deprecated: false
hidden: false
experimental: false
experimentalcli: false
kubernetes: false
swarm: false
- option: quiet
shorthand: q
value_type: bool
Expand Down

0 comments on commit caa0cbb

Please sign in to comment.