diff --git a/config/config_test.go b/config/config_test.go index 7bdacd8b7..e18bb685b 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -183,6 +183,7 @@ func TestDefaultResolver(t *testing.T) { "enable": "${ENABLE:false}", "rate": "${RATE}", "empty": "${EMPTY:foobar}", + "url": "${URL:http://example.com}", "array": []interface{}{ "${PORT}", map[string]interface{}{"foobar": "${NOTEXIST:8081}"}, @@ -237,6 +238,11 @@ func TestDefaultResolver(t *testing.T) { path: "foo.bar.empty", expect: "", }, + { + name: "test url with default", + path: "foo.bar.url", + expect: "http://example.com", + }, { name: "test array", path: "foo.bar.array", diff --git a/config/options.go b/config/options.go index 3574e9744..a96d8939e 100644 --- a/config/options.go +++ b/config/options.go @@ -84,7 +84,7 @@ func defaultDecoder(src *KeyValue, target map[string]interface{}) error { // placeholder format in ${key:default} or $key. func defaultResolver(input map[string]interface{}) error { mapper := func(name string) string { - args := strings.Split(strings.TrimSpace(name), ":") + args := strings.SplitN(strings.TrimSpace(name), ":", 2) if v, has := readValue(input, args[0]); has { s, _ := v.String() return s