MCPcopy Create free account
hub / github.com/docker/cli / createTransformHook

Function createTransformHook

cli/compose/loader/loader.go:322–357  ·  view source on GitHub ↗
(additionalTransformers ...Transformer)

Source from the content-addressed store, hash-verified

320}
321
322func 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
360func convertToStringKeysRecursive(value any, keyPrefix string) (any, error) {

Callers 1

TransformFunction · 0.85

Calls 1

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…