@@ -20,14 +20,20 @@ import (
20
20
"github.com/compose-spec/compose-go/v2/tree"
21
21
)
22
22
23
- var defaultValues = map [tree.Path ]transformFunc {}
23
+ // DefaultValues contains the default value transformers for compose fields
24
+ var DefaultValues = map [tree.Path ]TransformFunc {}
24
25
25
26
func init () {
26
- defaultValues ["services.*.build" ] = defaultBuildContext
27
- defaultValues ["services.*.secrets.*" ] = defaultSecretMount
28
- defaultValues ["services.*.ports.*" ] = portDefaults
29
- defaultValues ["services.*.deploy.resources.reservations.devices.*" ] = deviceRequestDefaults
30
- defaultValues ["services.*.gpus.*" ] = deviceRequestDefaults
27
+ DefaultValues ["services.*.build" ] = defaultBuildContext
28
+ DefaultValues ["services.*.secrets.*" ] = defaultSecretMount
29
+ DefaultValues ["services.*.ports.*" ] = portDefaults
30
+ DefaultValues ["services.*.deploy.resources.reservations.devices.*" ] = deviceRequestDefaults
31
+ DefaultValues ["services.*.gpus.*" ] = deviceRequestDefaults
32
+ }
33
+
34
+ // RegisterDefaultValue registers a custom transformer for the given path pattern
35
+ func RegisterDefaultValue (path string , transformer TransformFunc ) {
36
+ DefaultValues [tree .Path (path )] = transformer
31
37
}
32
38
33
39
// SetDefaultValues transforms a compose model to set default values to missing attributes
@@ -40,7 +46,7 @@ func SetDefaultValues(yaml map[string]any) (map[string]any, error) {
40
46
}
41
47
42
48
func setDefaults (data any , p tree.Path ) (any , error ) {
43
- for pattern , transformer := range defaultValues {
49
+ for pattern , transformer := range DefaultValues {
44
50
if p .Matches (pattern ) {
45
51
t , err := transformer (data , p , false )
46
52
if err != nil {
0 commit comments