(additionalTransformers ...Transformer)
| 320 | } |
| 321 | |
| 322 | func createTransformHook(additionalTransformers ...Transformer) mapstructure.DecodeHookFuncType { |
| 323 | transforms := map[reflect.Type]func(any) (any, error){ |
| 324 | reflect.TypeFor[types.External](): transformExternal, |
| 325 | reflect.TypeFor[types.HealthCheckTest](): transformHealthCheckTest, |
| 326 | reflect.TypeFor[types.ShellCommand](): transformShellCommand, |
| 327 | reflect.TypeFor[types.StringList](): transformStringList, |
| 328 | reflect.TypeFor[map[string]string](): transformMapStringString, |
| 329 | reflect.TypeFor[types.UlimitsConfig](): transformUlimits, |
| 330 | reflect.TypeFor[types.UnitBytes](): transformSize, |
| 331 | reflect.TypeFor[[]types.ServicePortConfig](): transformServicePort, |
| 332 | reflect.TypeFor[types.ServiceSecretConfig](): transformStringSourceMap, |
| 333 | reflect.TypeFor[types.ServiceConfigObjConfig](): transformStringSourceMap, |
| 334 | reflect.TypeFor[types.StringOrNumberList](): transformStringOrNumberList, |
| 335 | reflect.TypeFor[map[string]*types.ServiceNetworkConfig](): transformServiceNetworkMap, |
| 336 | reflect.TypeFor[types.Mapping](): transformMappingOrListFunc("=", false), |
| 337 | reflect.TypeFor[types.MappingWithEquals](): transformMappingOrListFunc("=", true), |
| 338 | reflect.TypeFor[types.Labels](): transformMappingOrListFunc("=", false), |
| 339 | reflect.TypeFor[types.MappingWithColon](): transformMappingOrListFunc(":", false), |
| 340 | reflect.TypeFor[types.HostsList](): transformHostsList, |
| 341 | reflect.TypeFor[types.ServiceVolumeConfig](): transformServiceVolumeConfig, |
| 342 | reflect.TypeFor[types.BuildConfig](): transformBuildConfig, |
| 343 | reflect.TypeFor[types.Duration](): transformStringToDuration, |
| 344 | } |
| 345 | |
| 346 | for _, transformer := range additionalTransformers { |
| 347 | transforms[transformer.TypeOf] = transformer.Func |
| 348 | } |
| 349 | |
| 350 | return func(_ reflect.Type, target reflect.Type, data any) (any, error) { |
| 351 | transform, ok := transforms[target] |
| 352 | if !ok { |
| 353 | return data, nil |
| 354 | } |
| 355 | return transform(data) |
| 356 | } |
| 357 | } |
| 358 | |
| 359 | // keys needs to be converted to strings for jsonschema |
| 360 | func convertToStringKeysRecursive(value any, keyPrefix string) (any, error) { |
no test coverage detected
searching dependent graphs…