Skip to content

Commit 161ad54

Browse files
authored
vendor: upgrade to compose-go/v2 (#6529)
* vendor: upgrade to compose-go/v2 Signed-off-by: Nick Sieger <[email protected]> * vendor: fix dockercompose tests Signed-off-by: Nick Sieger <[email protected]> --------- Signed-off-by: Nick Sieger <[email protected]>
1 parent 7aaeedb commit 161ad54

File tree

141 files changed

+11940
-5834
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+11940
-5834
lines changed

go.mod

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/akutz/memconn v0.1.0
88
github.com/alessio/shellescape v1.4.1
99
github.com/blang/semver v3.5.1+incompatible
10-
github.com/compose-spec/compose-go v1.20.2
10+
github.com/compose-spec/compose-go/v2 v2.5.0
1111
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
1212
github.com/distribution/reference v0.6.0
1313
github.com/docker/cli v27.1.1+incompatible
@@ -148,6 +148,7 @@ require (
148148
github.com/go-openapi/jsonreference v0.21.0 // indirect
149149
github.com/go-openapi/swag v0.23.0 // indirect
150150
github.com/go-sql-driver/mysql v1.4.1 // indirect
151+
github.com/go-viper/mapstructure/v2 v2.0.0 // indirect
151152
github.com/gofrs/flock v0.8.1 // indirect
152153
github.com/gofrs/uuid v4.0.0+incompatible // indirect
153154
github.com/gogo/googleapis v1.4.1 // indirect
@@ -163,7 +164,6 @@ require (
163164
github.com/hashicorp/errwrap v1.1.0 // indirect
164165
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
165166
github.com/hashicorp/go-multierror v1.1.1 // indirect
166-
github.com/imdario/mergo v0.3.16 // indirect
167167
github.com/in-toto/in-toto-golang v0.5.0 // indirect
168168
github.com/inconshreveable/mousetrap v1.1.0 // indirect
169169
github.com/jinzhu/gorm v1.9.12 // indirect
@@ -212,6 +212,7 @@ require (
212212
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
213213
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
214214
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
215+
github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
215216
github.com/xlab/treeprint v1.2.0 // indirect
216217
go.etcd.io/etcd/api/v3 v3.5.16 // indirect
217218
go.etcd.io/etcd/client/pkg/v3 v3.5.16 // indirect

go.sum

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ github.com/cloudflare/redoctober v0.0.0-20171127175943-746a508df14c/go.mod h1:6S
114114
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
115115
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
116116
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4=
117-
github.com/compose-spec/compose-go v1.20.2 h1:u/yfZHn4EaHGdidrZycWpxXgFffjYULlTbRfJ51ykjQ=
118-
github.com/compose-spec/compose-go v1.20.2/go.mod h1:+MdqXV4RA7wdFsahh/Kb8U0pAJqkg7mr4PM9tFKU8RM=
117+
github.com/compose-spec/compose-go/v2 v2.5.0 h1:Y1hYWfYaBsAAHwggXME1LjoZENq7bP0tj9gqQxYwKR8=
118+
github.com/compose-spec/compose-go/v2 v2.5.0/go.mod h1:vPlkN0i+0LjLf9rv52lodNMUTJF5YHVfHVGLLIP67NA=
119119
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
120120
github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
121121
github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro=
@@ -291,6 +291,8 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEe
291291
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
292292
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
293293
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
294+
github.com/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAprG2mQfMfc=
295+
github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
294296
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
295297
github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
296298
github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
@@ -419,8 +421,6 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
419421
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
420422
github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
421423
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
422-
github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
423-
github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
424424
github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY=
425425
github.com/in-toto/in-toto-golang v0.5.0/go.mod h1:/Rq0IZHLV7Ku5gielPT4wPHJfH1GdHMCq8+WPxw8/BE=
426426
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
@@ -836,6 +836,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo
836836
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
837837
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
838838
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
839+
github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc=
840+
github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU=
839841
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
840842
github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk=
841843
github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=

internal/dockercompose/client.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ import (
1212
"strings"
1313
"sync"
1414

15-
"github.com/compose-spec/compose-go/loader"
15+
"github.com/compose-spec/compose-go/v2/loader"
1616
"golang.org/x/mod/semver"
1717

18-
"github.com/compose-spec/compose-go/types"
18+
"github.com/compose-spec/compose-go/v2/types"
1919
"github.com/pkg/errors"
2020

2121
"github.com/tilt-dev/tilt/internal/container"
2222
"github.com/tilt-dev/tilt/internal/docker"
2323
"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
2424
"github.com/tilt-dev/tilt/pkg/logger"
2525

26-
compose "github.com/compose-spec/compose-go/cli"
26+
compose "github.com/compose-spec/compose-go/v2/cli"
2727
)
2828

2929
// versionRegex handles both v1 and v2 version outputs, which have several variations.
@@ -254,7 +254,7 @@ func (c *cmdDCClient) Project(ctx context.Context, spec v1alpha1.DockerComposePr
254254

255255
// First, use compose-go to natively load the project.
256256
if len(spec.ConfigPaths) > 0 {
257-
parsed, err := c.loadProjectNative(spec)
257+
parsed, err := c.loadProjectNative(ctx, spec)
258258
if err == nil {
259259
proj = parsed
260260
}
@@ -294,27 +294,29 @@ func (c *cmdDCClient) Version(ctx context.Context) (string, string, error) {
294294
}
295295

296296
func composeProjectOptions(modelProj v1alpha1.DockerComposeProject, env []string) (*compose.ProjectOptions, error) {
297+
var envFiles []string
298+
if modelProj.EnvFile != "" {
299+
envFiles = append(envFiles, modelProj.EnvFile)
300+
}
297301
// NOTE: take care to keep behavior in sync with loadProjectCLI()
298302
allProjectOptions := append(dcProjectOptions,
299303
compose.WithWorkingDirectory(modelProj.ProjectPath),
300304
compose.WithName(modelProj.Name),
301305
compose.WithResolvedPaths(true),
302306
compose.WithEnv(env),
303307
compose.WithProfiles(modelProj.Profiles),
308+
compose.WithEnvFiles(envFiles...),
304309
)
305-
if modelProj.EnvFile != "" {
306-
allProjectOptions = append(allProjectOptions, compose.WithEnvFiles(modelProj.EnvFile))
307-
}
308310
allProjectOptions = append(allProjectOptions, compose.WithDotEnv)
309311
return compose.NewProjectOptions(modelProj.ConfigPaths, allProjectOptions...)
310312
}
311313

312-
func (c *cmdDCClient) loadProjectNative(modelProj v1alpha1.DockerComposeProject) (*types.Project, error) {
314+
func (c *cmdDCClient) loadProjectNative(ctx context.Context, modelProj v1alpha1.DockerComposeProject) (*types.Project, error) {
313315
opts, err := composeProjectOptions(modelProj, c.mergedEnv())
314316
if err != nil {
315317
return nil, err
316318
}
317-
proj, err := compose.ProjectFromOptions(opts)
319+
proj, err := compose.ProjectFromOptions(ctx, opts)
318320
if err != nil {
319321
return nil, err
320322
}

internal/dockercompose/client_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"testing"
66

7-
"github.com/compose-spec/compose-go/types"
7+
"github.com/compose-spec/compose-go/v2/types"
88
"github.com/stretchr/testify/assert"
99
"github.com/stretchr/testify/require"
1010

@@ -55,7 +55,7 @@ func TestVariableInterpolation(t *testing.T) {
5555

5656
proj := f.loadProject(output)
5757
if assert.Len(t, proj.Services, 1) {
58-
svc := proj.Services[0]
58+
svc := proj.Services["app"]
5959
assert.Equal(t, "myimage", svc.Image)
6060
if assert.NotNil(t, svc.Build) {
6161
assert.Equal(t, f.tmpdir.JoinPath("0"), svc.Build.Context)
@@ -133,7 +133,7 @@ func TestLoadEnvFile(t *testing.T) {
133133
image: asdf
134134
`
135135
proj := f.loadProject(dcYAML)
136-
require.Equal(t, types.ShellCommand{"foo"}, proj.Services[0].Command)
136+
require.Equal(t, types.ShellCommand{"foo"}, proj.Services["foo"].Command)
137137
}
138138

139139
type dcFixture struct {

internal/dockercompose/fake_client.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import (
88
"sync"
99
"testing"
1010

11-
"github.com/compose-spec/compose-go/loader"
11+
"github.com/compose-spec/compose-go/v2/loader"
1212

13-
"github.com/compose-spec/compose-go/types"
13+
"github.com/compose-spec/compose-go/v2/types"
1414

1515
"github.com/tilt-dev/tilt/internal/container"
1616
"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
@@ -134,7 +134,7 @@ func (c *FakeDCClient) Config(_ context.Context, _ []string) (string, error) {
134134
return c.ConfigOutput, nil
135135
}
136136

137-
func (c *FakeDCClient) Project(_ context.Context, m v1alpha1.DockerComposeProject) (*types.Project, error) {
137+
func (c *FakeDCClient) Project(ctx context.Context, m v1alpha1.DockerComposeProject) (*types.Project, error) {
138138
// this is a dummy ProjectOptions that lets us use compose's logic to apply options
139139
// for consistency, but we have to then pull the data out ourselves since we're calling
140140
// loader.Load ourselves
@@ -152,7 +152,7 @@ func (c *FakeDCClient) Project(_ context.Context, m v1alpha1.DockerComposeProjec
152152
projectName = "fakedc"
153153
}
154154

155-
p, err := loader.Load(types.ConfigDetails{
155+
p, err := loader.LoadWithContext(ctx, types.ConfigDetails{
156156
WorkingDir: workDir,
157157
ConfigFiles: []types.ConfigFile{
158158
{

internal/tiltfile/docker_compose.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import (
1212

1313
"golang.org/x/exp/slices"
1414

15-
"github.com/compose-spec/compose-go/consts"
16-
"github.com/compose-spec/compose-go/loader"
17-
"github.com/compose-spec/compose-go/types"
15+
"github.com/compose-spec/compose-go/v2/consts"
16+
"github.com/compose-spec/compose-go/v2/loader"
17+
"github.com/compose-spec/compose-go/v2/types"
1818
"github.com/distribution/reference"
1919
"github.com/pkg/errors"
2020
"go.starlark.net/starlark"
@@ -193,11 +193,11 @@ func (s *tiltfileState) dockerCompose(thread *starlark.Thread, fn *starlark.Buil
193193
}
194194

195195
dc.serviceNames = append(dc.serviceNames, svc.Name)
196-
for _, f := range svc.ServiceConfig.EnvFile {
197-
if !filepath.IsAbs(f) {
198-
f = filepath.Join(project.ProjectPath, f)
196+
for _, f := range svc.ServiceConfig.EnvFiles {
197+
if !filepath.IsAbs(f.Path) {
198+
f.Path = filepath.Join(project.ProjectPath, f.Path)
199199
}
200-
err = io.RecordReadPath(thread, io.WatchFileOnly, f)
200+
err = io.RecordReadPath(thread, io.WatchFileOnly, f.Path)
201201
if err != nil {
202202
return nil, err
203203
}
@@ -488,8 +488,8 @@ func parseDCConfig(ctx context.Context, dcc dockercompose.DockerComposeClient, d
488488
}
489489

490490
var services []*dcService
491-
err = proj.WithServices(proj.ServiceNames(), func(svcConfig types.ServiceConfig) error {
492-
svc, err := dockerComposeConfigToService(dcrs, proj.Name, svcConfig)
491+
err = proj.ForEachService(proj.ServiceNames(), func(name string, svcConfig *types.ServiceConfig) error {
492+
svc, err := dockerComposeConfigToService(dcrs, proj.Name, *svcConfig)
493493
if err != nil {
494494
return errors.Wrapf(err, "getting service %s", svcConfig.Name)
495495
}

0 commit comments

Comments
 (0)