Skip to content

Commit 8b16ab1

Browse files
authored
Merge pull request docker#11307 from glours/compose-go-immutable-projects
update compose-go to version using immutable Project functions
2 parents 24d3404 + 5d05df6 commit 8b16ab1

File tree

17 files changed

+59
-45
lines changed

17 files changed

+59
-45
lines changed

cmd/compose/compose.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ func (o *ProjectOptions) ToProject(dockerCli command.Cli, services []string, po
226226
return nil, errors.New("project name can't be empty. Use `--project-name` to set a valid name")
227227
}
228228

229-
err = project.EnableServices(services...)
229+
project, err = project.WithServicesEnabled(services...)
230230
if err != nil {
231231
return nil, err
232232
}
@@ -246,9 +246,9 @@ func (o *ProjectOptions) ToProject(dockerCli command.Cli, services []string, po
246246
project.Services[name] = s
247247
}
248248

249-
project.WithoutUnnecessaryResources()
249+
project = project.WithoutUnnecessaryResources()
250250

251-
err = project.ForServices(services)
251+
project, err = project.WithSelectedServices(services)
252252
return project, err
253253
}
254254

cmd/compose/compose_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func TestFilterServices(t *testing.T) {
4444
},
4545
},
4646
}
47-
err := p.ForServices([]string{"bar"})
47+
p, err := p.WithSelectedServices([]string{"bar"})
4848
assert.NilError(t, err)
4949

5050
assert.Equal(t, len(p.Services), 2)

cmd/compose/config.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,11 @@ func runServices(ctx context.Context, dockerCli command.Cli, opts configOptions)
159159
if err != nil {
160160
return err
161161
}
162-
return project.WithServices(project.ServiceNames(), func(s types.ServiceConfig) error {
163-
fmt.Fprintln(dockerCli.Out(), s.Name)
162+
err = project.ForEachService(project.ServiceNames(), func(serviceName string, _ *types.ServiceConfig) error {
163+
fmt.Fprintln(dockerCli.Out(), serviceName)
164164
return nil
165165
})
166+
return err
166167
}
167168

168169
func runVolumes(ctx context.Context, dockerCli command.Cli, opts configOptions) error {

cmd/compose/pull.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,12 @@ func pullCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service)
7272
return cmd
7373
}
7474

75-
func (opts pullOptions) apply(project *types.Project, services []string) error {
75+
func (opts pullOptions) apply(project *types.Project, services []string) (*types.Project, error) {
7676
if !opts.includeDeps {
77-
err := project.ForServices(services, types.IgnoreDependencies)
77+
var err error
78+
project, err = project.WithSelectedServices(services, types.IgnoreDependencies)
7879
if err != nil {
79-
return err
80+
return nil, err
8081
}
8182
}
8283

@@ -89,7 +90,7 @@ func (opts pullOptions) apply(project *types.Project, services []string) error {
8990
project.Services[i] = service
9091
}
9192
}
92-
return nil
93+
return project, nil
9394
}
9495

9596
func runPull(ctx context.Context, dockerCli command.Cli, backend api.Service, opts pullOptions, services []string) error {
@@ -98,7 +99,7 @@ func runPull(ctx context.Context, dockerCli command.Cli, backend api.Service, op
9899
return err
99100
}
100101

101-
err = opts.apply(project, services)
102+
project, err = opts.apply(project, services)
102103
if err != nil {
103104
return err
104105
}

cmd/compose/pullOptions_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func TestApplyPullOptions(t *testing.T) {
4646
},
4747
},
4848
}
49-
err := pullOptions{
49+
project, err := pullOptions{
5050
policy: types.PullPolicyMissing,
5151
}.apply(project, nil)
5252
assert.NilError(t, err)

cmd/compose/push.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func runPush(ctx context.Context, dockerCli command.Cli, backend api.Service, op
6060
}
6161

6262
if !opts.IncludeDeps {
63-
err := project.ForServices(services, types.IgnoreDependencies)
63+
project, err = project.WithSelectedServices(services, types.IgnoreDependencies)
6464
if err != nil {
6565
return err
6666
}

cmd/compose/restart.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func runRestart(ctx context.Context, dockerCli command.Cli, backend api.Service,
6262
}
6363

6464
if project != nil && len(services) > 0 {
65-
err := project.EnableServices(services...)
65+
project, err = project.WithServicesEnabled(services...)
6666
if err != nil {
6767
return err
6868
}

cmd/compose/run.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,18 @@ type runOptions struct {
6666
quietPull bool
6767
}
6868

69-
func (options runOptions) apply(project *types.Project) error {
69+
func (options runOptions) apply(project *types.Project) (*types.Project, error) {
7070
if options.noDeps {
71-
err := project.ForServices([]string{options.Service}, types.IgnoreDependencies)
71+
var err error
72+
project, err = project.WithSelectedServices([]string{options.Service}, types.IgnoreDependencies)
7273
if err != nil {
73-
return err
74+
return nil, err
7475
}
7576
}
7677

7778
target, err := project.GetService(options.Service)
7879
if err != nil {
79-
return err
80+
return nil, err
8081
}
8182

8283
target.Tty = !options.noTty
@@ -91,7 +92,7 @@ func (options runOptions) apply(project *types.Project) error {
9192
for _, p := range options.publish {
9293
config, err := types.ParsePortConfig(p)
9394
if err != nil {
94-
return err
95+
return nil, err
9596
}
9697
target.Ports = append(target.Ports, config...)
9798
}
@@ -100,7 +101,7 @@ func (options runOptions) apply(project *types.Project) error {
100101
for _, v := range options.volumes {
101102
volume, err := format.ParseVolume(v)
102103
if err != nil {
103-
return err
104+
return nil, err
104105
}
105106
target.Volumes = append(target.Volumes, volume)
106107
}
@@ -111,7 +112,7 @@ func (options runOptions) apply(project *types.Project) error {
111112
break
112113
}
113114
}
114-
return nil
115+
return project, nil
115116
}
116117

117118
func runCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) *cobra.Command {
@@ -210,7 +211,7 @@ func normalizeRunFlags(f *pflag.FlagSet, name string) pflag.NormalizedName {
210211
}
211212

212213
func runRun(ctx context.Context, backend api.Service, project *types.Project, options runOptions, createOpts createOptions, buildOpts buildOptions, dockerCli command.Cli) error {
213-
err := options.apply(project)
214+
project, err := options.apply(project)
214215
if err != nil {
215216
return err
216217
}

cmd/compose/scale.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func runScale(ctx context.Context, dockerCli command.Cli, backend api.Service, o
6767
}
6868

6969
if opts.noDeps {
70-
if err := project.ForServices(services, types.IgnoreDependencies); err != nil {
70+
if project, err = project.WithSelectedServices(services, types.IgnoreDependencies); err != nil {
7171
return err
7272
}
7373
}

cmd/compose/up.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,23 @@ type upOptions struct {
5656
waitTimeout int
5757
}
5858

59-
func (opts upOptions) apply(project *types.Project, services []string) error {
59+
func (opts upOptions) apply(project *types.Project, services []string) (*types.Project, error) {
6060
if opts.noDeps {
61-
err := project.ForServices(services, types.IgnoreDependencies)
61+
var err error
62+
project, err = project.WithSelectedServices(services, types.IgnoreDependencies)
6263
if err != nil {
63-
return err
64+
return nil, err
6465
}
6566
}
6667

6768
if opts.exitCodeFrom != "" {
6869
_, err := project.GetService(opts.exitCodeFrom)
6970
if err != nil {
70-
return err
71+
return nil, err
7172
}
7273
}
7374

74-
return nil
75+
return project, nil
7576
}
7677

7778
func upCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) *cobra.Command {
@@ -171,7 +172,7 @@ func runUp(
171172
return err
172173
}
173174

174-
err = upOptions.apply(project, services)
175+
project, err = upOptions.apply(project, services)
175176
if err != nil {
176177
return err
177178
}
@@ -229,9 +230,9 @@ func runUp(
229230
if upOptions.attachDependencies {
230231
dependencyOpt = types.IncludeDependencies
231232
}
232-
if err := project.WithServices(services, func(s types.ServiceConfig) error {
233+
if err := project.ForEachService(services, func(serviceName string, s *types.ServiceConfig) error {
233234
if s.Attach == nil || *s.Attach {
234-
attachSet.Add(s.Name)
235+
attachSet.Add(serviceName)
235236
}
236237
return nil
237238
}, dependencyOpt); err != nil {

0 commit comments

Comments
 (0)