mirror of https://github.com/docker/cli.git
Fix loader error with different build syntax
`build: .` was not working anymore. Fixing this by adding a new tranform function for BuildConfig. Signed-off-by: Vincent Demeester <vincent@sbr.pm>
This commit is contained in:
parent
bd31cb4bd5
commit
0da9f14821
|
@ -221,6 +221,7 @@ func createTransformHook() mapstructure.DecodeHookFuncType {
|
|||
reflect.TypeOf(types.Labels{}): transformMappingOrListFunc("=", false),
|
||||
reflect.TypeOf(types.MappingWithColon{}): transformMappingOrListFunc(":", false),
|
||||
reflect.TypeOf(types.ServiceVolumeConfig{}): transformServiceVolumeConfig,
|
||||
reflect.TypeOf(types.BuildConfig{}): transformBuildConfig,
|
||||
}
|
||||
|
||||
return func(_ reflect.Type, target reflect.Type, data interface{}) (interface{}, error) {
|
||||
|
@ -563,6 +564,17 @@ func transformStringSourceMap(data interface{}) (interface{}, error) {
|
|||
}
|
||||
}
|
||||
|
||||
func transformBuildConfig(data interface{}) (interface{}, error) {
|
||||
switch value := data.(type) {
|
||||
case string:
|
||||
return map[string]interface{}{"context": value}, nil
|
||||
case map[string]interface{}:
|
||||
return data, nil
|
||||
default:
|
||||
return data, errors.Errorf("invalid type %T for service build", value)
|
||||
}
|
||||
}
|
||||
|
||||
func transformServiceVolumeConfig(data interface{}) (interface{}, error) {
|
||||
switch value := data.(type) {
|
||||
case string:
|
||||
|
|
|
@ -528,6 +528,26 @@ services:
|
|||
assert.Equal(t, []string{"build", "links"}, unsupported)
|
||||
}
|
||||
|
||||
func TestBuildProperties(t *testing.T) {
|
||||
dict, err := ParseYAML([]byte(`
|
||||
version: "3"
|
||||
services:
|
||||
web:
|
||||
image: web
|
||||
build: .
|
||||
links:
|
||||
- bar
|
||||
db:
|
||||
image: db
|
||||
build:
|
||||
context: ./db
|
||||
`))
|
||||
require.NoError(t, err)
|
||||
configDetails := buildConfigDetails(dict, nil)
|
||||
_, err = Load(configDetails)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestDeprecatedProperties(t *testing.T) {
|
||||
dict, err := ParseYAML([]byte(`
|
||||
version: "3"
|
||||
|
|
Loading…
Reference in New Issue