From e2371b2de5f60bd8ab96e6a36d5b47c723f8b6ce Mon Sep 17 00:00:00 2001 From: vagrant Date: Mon, 3 Mar 2014 16:50:17 +0000 Subject: [PATCH] added string arrays and defaults --- config/config.go | 70 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/config/config.go b/config/config.go index 9cd3419e3..c7e889bd9 100644 --- a/config/config.go +++ b/config/config.go @@ -8,6 +8,8 @@ import ( "sync" "launchpad.net/goyaml" + "github.com/davecgh/go-spew/spew" + ) type Config struct { @@ -39,6 +41,27 @@ func GetString(key string) string { return config.GetString(key) } +func GetStringArray(key string) []string { + return config.GetStringArray(key) +} +func GetStringArrayDefault(key string,def []string) []string { + res,ok = config.GetStringArray(key) + + if ! ok{ + return def + } + return res +} + +func GetStringDefault(key string, default_value string) string { + return config.GetStringDefault(key, default_value) +} + +func GetIntDefault(key string, default_value int) int { + return config.GetIntDefault(key, default_value) +} + + func NewConfig(filename string) *Config { self := Config{} self.config = make(map[string]interface{}) @@ -62,9 +85,15 @@ func (self *Config) load() error { } data, err := ioutil.ReadFile(config_file) if err != nil { + return errors.New("Problem with config file: " + err.Error()) } - goyaml.Unmarshal(data, self.config) + + err=goyaml.Unmarshal(data, self.config) + if err != nil{ + println(err.Error()) + + } self.loaded = true return nil } @@ -94,6 +123,29 @@ func (self *Config) GetInt(key string) int { } return 0 } +func (self *Config) GetIntDefault(key string, default_value int) int { + value, ok := self.GetSafe(key) + if ok { + value_int, ok := value.(int) + if ok { + return value_int + } + } + return default_value +} + + +func (self *Config) GetStringDefault(key string, default_value string) string { + value, ok := self.GetSafe(key) + if ok { + value_string, ok := value.(string) + if ok { + return value_string + } + } + return default_value +} + func (self *Config) GetString(key string) string { value, ok := self.GetSafe(key) @@ -105,3 +157,19 @@ func (self *Config) GetString(key string) string { } return "" } + + + +func (self *Config) GetStringArray(key string) ([]string,bool){ + value, ok := self.GetSafe(key) + + if ok { + var results []string + for _,v:= range value.([]interface{}){ + results=append(results,v.(string)) + } + return results + } + return []string{},ok +} +