Skip to content
This repository was archived by the owner on Nov 27, 2023. It is now read-only.

Commit 268b3f6

Browse files
authored
Merge pull request #1144 from docker/down_with_file
run "down" using project if it was set for command
2 parents 54020db + e4682a0 commit 268b3f6

File tree

9 files changed

+41
-44
lines changed

9 files changed

+41
-44
lines changed

api/compose/api.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ type UpOptions struct {
6767
type DownOptions struct {
6868
// RemoveOrphans will cleanup containers that are not declared on the compose model but own the same labels
6969
RemoveOrphans bool
70+
// Project is the compose project used to define this app. Might be nil if user ran `down` just with project name
71+
Project *types.Project
7072
}
7173

7274
// ConvertOptions group options of the Convert API

cli/cmd/compose/build.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package compose
1919
import (
2020
"context"
2121

22-
"github.com/compose-spec/compose-go/cli"
2322
"github.com/spf13/cobra"
2423

2524
"github.com/docker/compose-cli/api/client"
@@ -52,11 +51,7 @@ func runBuild(ctx context.Context, opts buildOptions, services []string) error {
5251
}
5352

5453
_, err = progress.Run(ctx, func(ctx context.Context) (string, error) {
55-
options, err := opts.toProjectOptions()
56-
if err != nil {
57-
return "", err
58-
}
59-
project, err := cli.ProjectFromOptions(options)
54+
project, err := opts.toProject()
6055
if err != nil {
6156
return "", err
6257
}

cli/cmd/compose/compose.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,24 @@ func (o *composeOptions) toProjectName() (string, error) {
5050
return o.ProjectName, nil
5151
}
5252

53-
options, err := o.toProjectOptions()
53+
project, err := o.toProject()
5454
if err != nil {
5555
return "", err
5656
}
57+
return project.Name, nil
58+
}
59+
60+
func (o *composeOptions) toProject() (*types.Project, error) {
61+
options, err := o.toProjectOptions()
62+
if err != nil {
63+
return nil, err
64+
}
5765

5866
project, err := cli.ProjectFromOptions(options)
5967
if err != nil {
60-
return "", err
68+
return nil, err
6169
}
62-
return project.Name, nil
70+
return project, nil
6371
}
6472

6573
func (o *composeOptions) toProjectOptions() (*cli.ProjectOptions, error) {

cli/cmd/compose/convert.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222

2323
"github.com/docker/compose-cli/api/compose"
2424

25-
"github.com/compose-spec/compose-go/cli"
2625
"github.com/spf13/cobra"
2726

2827
"github.com/docker/compose-cli/api/client"
@@ -53,12 +52,7 @@ func runConvert(ctx context.Context, opts composeOptions) error {
5352
return err
5453
}
5554

56-
options, err := opts.toProjectOptions()
57-
if err != nil {
58-
return err
59-
}
60-
61-
project, err := cli.ProjectFromOptions(options)
55+
project, err := opts.toProject()
6256
if err != nil {
6357
return err
6458
}

cli/cmd/compose/down.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ package compose
1919
import (
2020
"context"
2121

22+
"github.com/compose-spec/compose-go/types"
23+
2224
"github.com/docker/compose-cli/api/compose"
2325

2426
"github.com/spf13/cobra"
@@ -50,12 +52,20 @@ func runDown(ctx context.Context, opts composeOptions) error {
5052
}
5153

5254
_, err = progress.Run(ctx, func(ctx context.Context) (string, error) {
53-
projectName, err := opts.toProjectName()
54-
if err != nil {
55-
return "", err
55+
name := opts.ProjectName
56+
var project *types.Project
57+
if opts.ProjectName == "" {
58+
p, err := opts.toProject()
59+
if err != nil {
60+
return "", err
61+
}
62+
project = p
63+
name = p.Name
5664
}
57-
return projectName, c.ComposeService().Down(ctx, projectName, compose.DownOptions{
65+
66+
return name, c.ComposeService().Down(ctx, name, compose.DownOptions{
5867
RemoveOrphans: false,
68+
Project: project,
5969
})
6070
})
6171
return err

cli/cmd/compose/pull.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package compose
1919
import (
2020
"context"
2121

22-
"github.com/compose-spec/compose-go/cli"
2322
"github.com/spf13/cobra"
2423

2524
"github.com/docker/compose-cli/api/client"
@@ -53,11 +52,7 @@ func runPull(ctx context.Context, opts pullOptions, services []string) error {
5352
}
5453

5554
_, err = progress.Run(ctx, func(ctx context.Context) (string, error) {
56-
options, err := opts.toProjectOptions()
57-
if err != nil {
58-
return "", err
59-
}
60-
project, err := cli.ProjectFromOptions(options)
55+
project, err := opts.toProject()
6156
if err != nil {
6257
return "", err
6358
}

cli/cmd/compose/push.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package compose
1919
import (
2020
"context"
2121

22-
"github.com/compose-spec/compose-go/cli"
2322
"github.com/spf13/cobra"
2423

2524
"github.com/docker/compose-cli/api/client"
@@ -53,11 +52,7 @@ func runPush(ctx context.Context, opts pushOptions, services []string) error {
5352
}
5453

5554
_, err = progress.Run(ctx, func(ctx context.Context) (string, error) {
56-
options, err := opts.toProjectOptions()
57-
if err != nil {
58-
return "", err
59-
}
60-
project, err := cli.ProjectFromOptions(options)
55+
project, err := opts.toProject()
6156
if err != nil {
6257
return "", err
6358
}

cli/cmd/compose/up.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828
"github.com/docker/compose-cli/api/progress"
2929
"github.com/docker/compose-cli/cli/formatter"
3030

31-
"github.com/compose-spec/compose-go/cli"
3231
"github.com/compose-spec/compose-go/types"
3332
"github.com/spf13/cobra"
3433
)
@@ -118,11 +117,7 @@ func setup(ctx context.Context, opts composeOptions, services []string) (*client
118117
return nil, nil, err
119118
}
120119

121-
options, err := opts.toProjectOptions()
122-
if err != nil {
123-
return nil, nil, err
124-
}
125-
project, err := cli.ProjectFromOptions(options)
120+
project, err := opts.toProject()
126121
if err != nil {
127122
return nil, nil, err
128123
}

local/compose/down.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,24 @@ func (s *composeService) Down(ctx context.Context, projectName string, options c
3636
eg, _ := errgroup.WithContext(ctx)
3737
w := progress.ContextWriter(ctx)
3838

39-
project, err := s.projectFromContainerLabels(ctx, projectName)
40-
if err != nil {
41-
return err
39+
if options.Project == nil {
40+
project, err := s.projectFromContainerLabels(ctx, projectName)
41+
if err != nil {
42+
return err
43+
}
44+
options.Project = project
4245
}
4346

4447
var containers Containers
45-
containers, err = s.apiClient.ContainerList(ctx, moby.ContainerListOptions{
46-
Filters: filters.NewArgs(projectFilter(project.Name)),
48+
containers, err := s.apiClient.ContainerList(ctx, moby.ContainerListOptions{
49+
Filters: filters.NewArgs(projectFilter(options.Project.Name)),
4750
All: true,
4851
})
4952
if err != nil {
5053
return err
5154
}
5255

53-
err = InReverseDependencyOrder(ctx, project, func(c context.Context, service types.ServiceConfig) error {
56+
err = InReverseDependencyOrder(ctx, options.Project, func(c context.Context, service types.ServiceConfig) error {
5457
serviceContainers, others := containers.split(isService(service.Name))
5558
s.removeContainers(ctx, w, eg, serviceContainers)
5659
containers = others

0 commit comments

Comments
 (0)