Skip to content

Commit facef9f

Browse files
committed
Only ignore parsing errors when used with no-interpolate
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent 27a3a6a commit facef9f

21 files changed

+142
-44
lines changed

loader/loader.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ func loadYamlModel(ctx context.Context, config types.ConfigDetails, opts *Option
463463
}
464464
}
465465

466-
dict, err = transform.Canonical(dict)
466+
dict, err = transform.Canonical(dict, opts.SkipInterpolation)
467467
if err != nil {
468468
return nil, err
469469
}

transform/build.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ import (
2222
"github.com/compose-spec/compose-go/v2/tree"
2323
)
2424

25-
func transformBuild(data any, p tree.Path) (any, error) {
25+
func transformBuild(data any, p tree.Path, ignoreParseError bool) (any, error) {
2626
switch v := data.(type) {
2727
case map[string]any:
28-
return transformMapping(v, p)
28+
return transformMapping(v, p, ignoreParseError)
2929
case string:
3030
return map[string]any{
3131
"context": v,
@@ -35,7 +35,7 @@ func transformBuild(data any, p tree.Path) (any, error) {
3535
}
3636
}
3737

38-
func defaultBuildContext(data any, _ tree.Path) (any, error) {
38+
func defaultBuildContext(data any, _ tree.Path, _ bool) (any, error) {
3939
switch v := data.(type) {
4040
case map[string]any:
4141
if _, ok := v["context"]; !ok {

transform/build_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func Test_transformBuild(t *testing.T) {
4949
}
5050
for _, tt := range tests {
5151
t.Run(tt.name, func(t *testing.T) {
52-
got, err := transformBuild(tt.yaml, tree.NewPath("services.foo.build"))
52+
got, err := transformBuild(tt.yaml, tree.NewPath("services.foo.build"), false)
5353
assert.NilError(t, err)
5454
if !reflect.DeepEqual(got, tt.want) {
5555
t.Errorf("transformBuild() got = %v, want %v", got, tt.want)

transform/canonical.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"github.com/compose-spec/compose-go/v2/tree"
2121
)
2222

23-
type transformFunc func(data any, p tree.Path) (any, error)
23+
type transformFunc func(data any, p tree.Path, ignoreParseError bool) (any, error)
2424

2525
var transformers = map[tree.Path]transformFunc{}
2626

@@ -48,18 +48,18 @@ func init() {
4848
}
4949

5050
// Canonical transforms a compose model into canonical syntax
51-
func Canonical(yaml map[string]any) (map[string]any, error) {
52-
canonical, err := transform(yaml, tree.NewPath())
51+
func Canonical(yaml map[string]any, ignoreParseError bool) (map[string]any, error) {
52+
canonical, err := transform(yaml, tree.NewPath(), ignoreParseError)
5353
if err != nil {
5454
return nil, err
5555
}
5656
return canonical.(map[string]any), nil
5757
}
5858

59-
func transform(data any, p tree.Path) (any, error) {
59+
func transform(data any, p tree.Path, ignoreParseError bool) (any, error) {
6060
for pattern, transformer := range transformers {
6161
if p.Matches(pattern) {
62-
t, err := transformer(data, p)
62+
t, err := transformer(data, p, ignoreParseError)
6363
if err != nil {
6464
return nil, err
6565
}
@@ -68,13 +68,13 @@ func transform(data any, p tree.Path) (any, error) {
6868
}
6969
switch v := data.(type) {
7070
case map[string]any:
71-
a, err := transformMapping(v, p)
71+
a, err := transformMapping(v, p, ignoreParseError)
7272
if err != nil {
7373
return a, err
7474
}
7575
return v, nil
7676
case []any:
77-
a, err := transformSequence(v, p)
77+
a, err := transformSequence(v, p, ignoreParseError)
7878
if err != nil {
7979
return a, err
8080
}
@@ -84,9 +84,9 @@ func transform(data any, p tree.Path) (any, error) {
8484
}
8585
}
8686

87-
func transformSequence(v []any, p tree.Path) ([]any, error) {
87+
func transformSequence(v []any, p tree.Path, ignoreParseError bool) ([]any, error) {
8888
for i, e := range v {
89-
t, err := transform(e, p.Next("[]"))
89+
t, err := transform(e, p.Next("[]"), ignoreParseError)
9090
if err != nil {
9191
return nil, err
9292
}
@@ -95,9 +95,9 @@ func transformSequence(v []any, p tree.Path) ([]any, error) {
9595
return v, nil
9696
}
9797

98-
func transformMapping(v map[string]any, p tree.Path) (map[string]any, error) {
98+
func transformMapping(v map[string]any, p tree.Path, ignoreParseError bool) (map[string]any, error) {
9999
for k, e := range v {
100-
t, err := transform(e, p.Next(k))
100+
t, err := transform(e, p.Next(k), ignoreParseError)
101101
if err != nil {
102102
return nil, err
103103
}

transform/defaults.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func SetDefaultValues(yaml map[string]any) (map[string]any, error) {
3939
func setDefaults(data any, p tree.Path) (any, error) {
4040
for pattern, transformer := range defaultValues {
4141
if p.Matches(pattern) {
42-
t, err := transformer(data, p)
42+
t, err := transformer(data, p, false)
4343
if err != nil {
4444
return nil, err
4545
}

transform/dependson.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
"github.com/compose-spec/compose-go/v2/tree"
2323
)
2424

25-
func transformDependsOn(data any, p tree.Path) (any, error) {
25+
func transformDependsOn(data any, p tree.Path, _ bool) (any, error) {
2626
switch v := data.(type) {
2727
case map[string]any:
2828
for i, e := range v {

transform/envfile.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
"github.com/compose-spec/compose-go/v2/tree"
2323
)
2424

25-
func transformEnvFile(data any, p tree.Path) (any, error) {
25+
func transformEnvFile(data any, p tree.Path, _ bool) (any, error) {
2626
switch v := data.(type) {
2727
case string:
2828
return []any{

transform/envfile_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
)
2626

2727
func TestSingle(t *testing.T) {
28-
env, err := transformEnvFile(".env", tree.NewPath("service.test.env_file"))
28+
env, err := transformEnvFile(".env", tree.NewPath("service.test.env_file"), false)
2929
assert.NilError(t, err)
3030
assert.DeepEqual(t, env, []any{
3131
map[string]any{
@@ -42,7 +42,7 @@ func TestSequence(t *testing.T) {
4242
- other.env
4343
`), &in)
4444
assert.NilError(t, err)
45-
env, err := transformEnvFile(in, tree.NewPath("service.test.env_file"))
45+
env, err := transformEnvFile(in, tree.NewPath("service.test.env_file"), false)
4646
assert.NilError(t, err)
4747
assert.DeepEqual(t, env, []any{
4848
map[string]any{
@@ -64,7 +64,7 @@ func TestOptional(t *testing.T) {
6464
required: false
6565
`), &in)
6666
assert.NilError(t, err)
67-
env, err := transformEnvFile(in, tree.NewPath("service.test.env_file"))
67+
env, err := transformEnvFile(in, tree.NewPath("service.test.env_file"), false)
6868
assert.NilError(t, err)
6969
assert.DeepEqual(t, env, []any{
7070
map[string]any{

transform/extends.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ import (
2222
"github.com/compose-spec/compose-go/v2/tree"
2323
)
2424

25-
func transformExtends(data any, p tree.Path) (any, error) {
25+
func transformExtends(data any, p tree.Path, ignoreParseError bool) (any, error) {
2626
switch v := data.(type) {
2727
case map[string]any:
28-
return transformMapping(v, p)
28+
return transformMapping(v, p, ignoreParseError)
2929
case string:
3030
return map[string]any{
3131
"service": v,

transform/external.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ import (
2323
"github.com/sirupsen/logrus"
2424
)
2525

26-
func transformMaybeExternal(data any, p tree.Path) (any, error) {
26+
func transformMaybeExternal(data any, p tree.Path, ignoreParseError bool) (any, error) {
2727
if data == nil {
2828
return nil, nil
2929
}
30-
resource, err := transformMapping(data.(map[string]any), p)
30+
resource, err := transformMapping(data.(map[string]any), p, ignoreParseError)
3131
if err != nil {
3232
return nil, err
3333
}

0 commit comments

Comments
 (0)