1
0
mirror of https://github.com/astaxie/beego.git synced 2025-06-13 09:40:38 +00:00

Support etcd

This commit is contained in:
Ming Deng
2020-08-26 03:46:22 +00:00
parent 5b35bf6065
commit c2361170b3
20 changed files with 581 additions and 257 deletions

View File

@ -26,7 +26,7 @@
//
// cnf, err := config.NewConfig("yaml", "config.yaml")
//
//More docs http://beego.me/docs/module/config.md
// More docs http://beego.me/docs/module/config.md
package yaml
import (
@ -40,8 +40,9 @@ import (
"strings"
"sync"
"github.com/astaxie/beego/pkg/infrastructure/config"
"github.com/beego/goyaml2"
"github.com/astaxie/beego/pkg/infrastructure/config"
)
// Config is a yaml config parser and implements Config interface.
@ -209,39 +210,41 @@ func (c *ConfigContainer) DefaultFloat(key string, defaultval float64) float64 {
}
// String returns the string value for a given key.
func (c *ConfigContainer) String(key string) string {
func (c *ConfigContainer) String(key string) (string, error) {
if v, err := c.getData(key); err == nil {
if vv, ok := v.(string); ok {
return vv
return vv, nil
} else {
return "", errors.New(fmt.Sprintf("the value is not string, key: %s, value: %v", key, v))
}
}
return ""
return "", errors.New(fmt.Sprintf("configuration not found, key: %s", key))
}
// DefaultString returns the string value for a given key.
// if err != nil return defaultval
func (c *ConfigContainer) DefaultString(key string, defaultval string) string {
v := c.String(key)
if v == "" {
v, err := c.String(key)
if v == "" || err != nil {
return defaultval
}
return v
}
// Strings returns the []string value for a given key.
func (c *ConfigContainer) Strings(key string) []string {
v := c.String(key)
if v == "" {
return nil
func (c *ConfigContainer) Strings(key string) ([]string, error) {
v, err := c.String(key)
if v == "" || err != nil {
return nil, err
}
return strings.Split(v, ";")
return strings.Split(v, ";"), nil
}
// DefaultStrings returns the []string value for a given key.
// if err != nil return defaultval
func (c *ConfigContainer) DefaultStrings(key string, defaultval []string) []string {
v := c.Strings(key)
if v == nil {
v, err := c.Strings(key)
if v == nil || err != nil {
return defaultval
}
return v

View File

@ -70,7 +70,8 @@ func TestYaml(t *testing.T) {
t.Fatal(err)
}
if yamlconf.String("appname") != "beeapi" {
res, _ := yamlconf.String("appname")
if res != "beeapi" {
t.Fatal("appname not equal to beeapi")
}
@ -91,9 +92,9 @@ func TestYaml(t *testing.T) {
case bool:
value, err = yamlconf.Bool(k)
case []string:
value = yamlconf.Strings(k)
value, err = yamlconf.Strings(k)
case string:
value = yamlconf.String(k)
value, err = yamlconf.String(k)
default:
value, err = yamlconf.DIY(k)
}
@ -108,7 +109,8 @@ func TestYaml(t *testing.T) {
if err = yamlconf.Set("name", "astaxie"); err != nil {
t.Fatal(err)
}
if yamlconf.String("name") != "astaxie" {
res, _ = yamlconf.String("name")
if res != "astaxie" {
t.Fatal("get name error")
}