Merge pull request #32042 from vdemeester/compose-interpolate-error-instead-of-panic

[compose/interpolation] Make sure we error out instead of panic during interpolation
This commit is contained in:
Vincent Demeester 2017-03-24 09:00:06 +01:00 committed by GitHub
commit 7e6c7a52ce
1 changed files with 7 additions and 4 deletions

View File

@ -1,9 +1,8 @@
package interpolation
import (
"fmt"
"github.com/docker/docker/cli/compose/template"
"github.com/pkg/errors"
)
// Interpolate replaces variables in a string with the values from a mapping
@ -15,7 +14,11 @@ func Interpolate(config map[string]interface{}, section string, mapping template
out[name] = nil
continue
}
interpolatedItem, err := interpolateSectionItem(name, item.(map[string]interface{}), section, mapping)
mapItem, ok := item.(map[string]interface{})
if !ok {
return nil, errors.Errorf("Invalid type for %s : %T instead of %T", name, item, out)
}
interpolatedItem, err := interpolateSectionItem(name, mapItem, section, mapping)
if err != nil {
return nil, err
}
@ -37,7 +40,7 @@ func interpolateSectionItem(
for key, value := range item {
interpolatedValue, err := recursiveInterpolate(value, mapping)
if err != nil {
return nil, fmt.Errorf(
return nil, errors.Errorf(
"Invalid interpolation format for %#v option in %s %#v: %#v. You may need to escape any $ with another $.",
key, section, name, err.Template,
)