From 8f70196de1dcd44099b18d17827dc28a0d65ed30 Mon Sep 17 00:00:00 2001 From: Guillaume Lours <705411+glours@users.noreply.github.com> Date: Thu, 28 Nov 2024 15:01:24 +0100 Subject: [PATCH] bump compose-go to v2.4.5 Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 +- .../compose-go/v2/template/variables.go | 3 + .../compose-go/v2/types/project.go | 60 ++++++++++++----- .../compose-spec/compose-go/v2/types/types.go | 64 +++++++++++-------- vendor/modules.txt | 2 +- 6 files changed, 88 insertions(+), 47 deletions(-) diff --git a/go.mod b/go.mod index 219f243a770..c158d9e0400 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/Masterminds/semver/v3 v3.2.1 github.com/Microsoft/go-winio v0.6.2 github.com/aws/aws-sdk-go-v2/config v1.26.6 - github.com/compose-spec/compose-go/v2 v2.4.4 + github.com/compose-spec/compose-go/v2 v2.4.5 github.com/containerd/console v1.0.4 github.com/containerd/containerd v1.7.24 github.com/containerd/continuity v0.4.5 diff --git a/go.sum b/go.sum index c1dec3a335d..be61c724eb2 100644 --- a/go.sum +++ b/go.sum @@ -83,8 +83,8 @@ github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnTh github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= -github.com/compose-spec/compose-go/v2 v2.4.4 h1:cvHBl5Jf1iNBmRrZCICmHvaoskYc1etTPEMLKVwokAY= -github.com/compose-spec/compose-go/v2 v2.4.4/go.mod h1:lFN0DrMxIncJGYAXTfWuajfwj5haBJqrBkarHcnjJKc= +github.com/compose-spec/compose-go/v2 v2.4.5 h1:p4ih4Jb6VgGPLPxh3fSFVKAjFHtZd+7HVLCSFzcFx9Y= +github.com/compose-spec/compose-go/v2 v2.4.5/go.mod h1:lFN0DrMxIncJGYAXTfWuajfwj5haBJqrBkarHcnjJKc= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= diff --git a/vendor/github.com/compose-spec/compose-go/v2/template/variables.go b/vendor/github.com/compose-spec/compose-go/v2/template/variables.go index fb32f9c3717..84edee59956 100644 --- a/vendor/github.com/compose-spec/compose-go/v2/template/variables.go +++ b/vendor/github.com/compose-spec/compose-go/v2/template/variables.go @@ -108,6 +108,9 @@ func extractVariable(value interface{}, pattern *regexp.Regexp) ([]Variable, boo if r >= 'A' && r <= 'Z' { return false } + if r >= '0' && r <= '9' { + return false + } if r == '_' { return false } diff --git a/vendor/github.com/compose-spec/compose-go/v2/types/project.go b/vendor/github.com/compose-spec/compose-go/v2/types/project.go index 19d6e32baff..fa4acc7c044 100644 --- a/vendor/github.com/compose-spec/compose-go/v2/types/project.go +++ b/vendor/github.com/compose-spec/compose-go/v2/types/project.go @@ -560,39 +560,69 @@ func (p *Project) WithImagesResolved(resolver func(named reference.Named) (godig }) } +type marshallOptions struct { + secretsContent bool +} + +func WithSecretContent(o *marshallOptions) { + o.secretsContent = true +} + +func (opt *marshallOptions) apply(p *Project) *Project { + if opt.secretsContent { + p = p.deepCopy() + for name, config := range p.Secrets { + config.marshallContent = true + p.Secrets[name] = config + } + } + return p +} + +func applyMarshallOptions(p *Project, options ...func(*marshallOptions)) *Project { + opts := &marshallOptions{} + for _, option := range options { + option(opts) + } + p = opts.apply(p) + return p +} + // MarshalYAML marshal Project into a yaml tree -func (p *Project) MarshalYAML() ([]byte, error) { +func (p *Project) MarshalYAML(options ...func(*marshallOptions)) ([]byte, error) { buf := bytes.NewBuffer([]byte{}) encoder := yaml.NewEncoder(buf) encoder.SetIndent(2) // encoder.CompactSeqIndent() FIXME https://github.com/go-yaml/yaml/pull/753 - err := encoder.Encode(p) + src := applyMarshallOptions(p, options...) + err := encoder.Encode(src) if err != nil { return nil, err } return buf.Bytes(), nil } -// MarshalJSON makes Config implement json.Marshaler -func (p *Project) MarshalJSON() ([]byte, error) { +// MarshalJSON marshal Project into a json document +func (p *Project) MarshalJSON(options ...func(*marshallOptions)) ([]byte, error) { + src := applyMarshallOptions(p, options...) m := map[string]interface{}{ - "name": p.Name, - "services": p.Services, + "name": src.Name, + "services": src.Services, } - if len(p.Networks) > 0 { - m["networks"] = p.Networks + if len(src.Networks) > 0 { + m["networks"] = src.Networks } - if len(p.Volumes) > 0 { - m["volumes"] = p.Volumes + if len(src.Volumes) > 0 { + m["volumes"] = src.Volumes } - if len(p.Secrets) > 0 { - m["secrets"] = p.Secrets + if len(src.Secrets) > 0 { + m["secrets"] = src.Secrets } - if len(p.Configs) > 0 { - m["configs"] = p.Configs + if len(src.Configs) > 0 { + m["configs"] = src.Configs } - for k, v := range p.Extensions { + for k, v := range src.Extensions { m[k] = v } return json.MarshalIndent(m, "", " ") diff --git a/vendor/github.com/compose-spec/compose-go/v2/types/types.go b/vendor/github.com/compose-spec/compose-go/v2/types/types.go index 87474e459ab..3774945083d 100644 --- a/vendor/github.com/compose-spec/compose-go/v2/types/types.go +++ b/vendor/github.com/compose-spec/compose-go/v2/types/types.go @@ -678,16 +678,17 @@ func (u *UlimitsConfig) MarshalJSON() ([]byte, error) { // NetworkConfig for a network type NetworkConfig struct { - Name string `yaml:"name,omitempty" json:"name,omitempty"` - Driver string `yaml:"driver,omitempty" json:"driver,omitempty"` - DriverOpts Options `yaml:"driver_opts,omitempty" json:"driver_opts,omitempty"` - Ipam IPAMConfig `yaml:"ipam,omitempty" json:"ipam,omitempty"` - External External `yaml:"external,omitempty" json:"external,omitempty"` - Internal bool `yaml:"internal,omitempty" json:"internal,omitempty"` - Attachable bool `yaml:"attachable,omitempty" json:"attachable,omitempty"` - Labels Labels `yaml:"labels,omitempty" json:"labels,omitempty"` - EnableIPv6 *bool `yaml:"enable_ipv6,omitempty" json:"enable_ipv6,omitempty"` - Extensions Extensions `yaml:"#extensions,inline,omitempty" json:"-"` + Name string `yaml:"name,omitempty" json:"name,omitempty"` + Driver string `yaml:"driver,omitempty" json:"driver,omitempty"` + DriverOpts Options `yaml:"driver_opts,omitempty" json:"driver_opts,omitempty"` + Ipam IPAMConfig `yaml:"ipam,omitempty" json:"ipam,omitempty"` + External External `yaml:"external,omitempty" json:"external,omitempty"` + Internal bool `yaml:"internal,omitempty" json:"internal,omitempty"` + Attachable bool `yaml:"attachable,omitempty" json:"attachable,omitempty"` + Labels Labels `yaml:"labels,omitempty" json:"labels,omitempty"` + CustomLabels Labels `yaml:"-" json:"-"` + EnableIPv6 *bool `yaml:"enable_ipv6,omitempty" json:"enable_ipv6,omitempty"` + Extensions Extensions `yaml:"#extensions,inline,omitempty" json:"-"` } // IPAMConfig for a network @@ -708,12 +709,13 @@ type IPAMPool struct { // VolumeConfig for a volume type VolumeConfig struct { - Name string `yaml:"name,omitempty" json:"name,omitempty"` - Driver string `yaml:"driver,omitempty" json:"driver,omitempty"` - DriverOpts Options `yaml:"driver_opts,omitempty" json:"driver_opts,omitempty"` - External External `yaml:"external,omitempty" json:"external,omitempty"` - Labels Labels `yaml:"labels,omitempty" json:"labels,omitempty"` - Extensions Extensions `yaml:"#extensions,inline,omitempty" json:"-"` + Name string `yaml:"name,omitempty" json:"name,omitempty"` + Driver string `yaml:"driver,omitempty" json:"driver,omitempty"` + DriverOpts Options `yaml:"driver_opts,omitempty" json:"driver_opts,omitempty"` + External External `yaml:"external,omitempty" json:"external,omitempty"` + Labels Labels `yaml:"labels,omitempty" json:"labels,omitempty"` + CustomLabels Labels `yaml:"-" json:"-"` + Extensions Extensions `yaml:"#extensions,inline,omitempty" json:"-"` } // External identifies a Volume or Network as a reference to a resource that is @@ -730,16 +732,18 @@ type CredentialSpecConfig struct { // FileObjectConfig is a config type for a file used by a service type FileObjectConfig struct { - Name string `yaml:"name,omitempty" json:"name,omitempty"` - File string `yaml:"file,omitempty" json:"file,omitempty"` - Environment string `yaml:"environment,omitempty" json:"environment,omitempty"` - Content string `yaml:"content,omitempty" json:"content,omitempty"` - External External `yaml:"external,omitempty" json:"external,omitempty"` - Labels Labels `yaml:"labels,omitempty" json:"labels,omitempty"` - Driver string `yaml:"driver,omitempty" json:"driver,omitempty"` - DriverOpts map[string]string `yaml:"driver_opts,omitempty" json:"driver_opts,omitempty"` - TemplateDriver string `yaml:"template_driver,omitempty" json:"template_driver,omitempty"` - Extensions Extensions `yaml:"#extensions,inline,omitempty" json:"-"` + Name string `yaml:"name,omitempty" json:"name,omitempty"` + File string `yaml:"file,omitempty" json:"file,omitempty"` + Environment string `yaml:"environment,omitempty" json:"environment,omitempty"` + Content string `yaml:"content,omitempty" json:"content,omitempty"` + // configure marshalling to include Content - excluded by default to prevent sensitive data leaks + marshallContent bool + External External `yaml:"external,omitempty" json:"external,omitempty"` + Labels Labels `yaml:"labels,omitempty" json:"labels,omitempty"` + Driver string `yaml:"driver,omitempty" json:"driver,omitempty"` + DriverOpts map[string]string `yaml:"driver_opts,omitempty" json:"driver_opts,omitempty"` + TemplateDriver string `yaml:"template_driver,omitempty" json:"template_driver,omitempty"` + Extensions Extensions `yaml:"#extensions,inline,omitempty" json:"-"` } const ( @@ -773,14 +777,18 @@ type SecretConfig FileObjectConfig // MarshalYAML makes SecretConfig implement yaml.Marshaller func (s SecretConfig) MarshalYAML() (interface{}, error) { // secret content is set while loading model. Never marshall it - s.Content = "" + if !s.marshallContent { + s.Content = "" + } return FileObjectConfig(s), nil } // MarshalJSON makes SecretConfig implement json.Marshaller func (s SecretConfig) MarshalJSON() ([]byte, error) { // secret content is set while loading model. Never marshall it - s.Content = "" + if !s.marshallContent { + s.Content = "" + } return json.Marshal(FileObjectConfig(s)) } diff --git a/vendor/modules.txt b/vendor/modules.txt index 51791f36978..cd9cd1846cf 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -128,7 +128,7 @@ github.com/cenkalti/backoff/v4 # github.com/cespare/xxhash/v2 v2.3.0 ## explicit; go 1.11 github.com/cespare/xxhash/v2 -# github.com/compose-spec/compose-go/v2 v2.4.4 +# github.com/compose-spec/compose-go/v2 v2.4.5 ## explicit; go 1.21 github.com/compose-spec/compose-go/v2/cli github.com/compose-spec/compose-go/v2/consts