diff options
author | zelig <viktor.tron@gmail.com> | 2014-07-04 00:30:51 +0800 |
---|---|---|
committer | zelig <viktor.tron@gmail.com> | 2014-07-04 00:30:51 +0800 |
commit | f02602d02d12204a10c2aa9d1d43332b1be2fe0a (patch) | |
tree | c8de787667d4d2d5a4303d08c59567965d8dfba4 /ethutil | |
parent | 90c2064640984be95e493c57c3dc8dd5134e23e9 (diff) | |
download | dexon-f02602d02d12204a10c2aa9d1d43332b1be2fe0a.tar dexon-f02602d02d12204a10c2aa9d1d43332b1be2fe0a.tar.gz dexon-f02602d02d12204a10c2aa9d1d43332b1be2fe0a.tar.bz2 dexon-f02602d02d12204a10c2aa9d1d43332b1be2fe0a.tar.lz dexon-f02602d02d12204a10c2aa9d1d43332b1be2fe0a.tar.xz dexon-f02602d02d12204a10c2aa9d1d43332b1be2fe0a.tar.zst dexon-f02602d02d12204a10c2aa9d1d43332b1be2fe0a.zip |
ConfigManager (transitional)
- remove clientstring handling from ethutil.Config
- ReadConfig takes no Identifier argument
- members Ver, ClientString, ClientIdentifier removed from Config
- type ConfValue removed
- expose public type ethutil.ConfigManager
- Set -> Save(key string, value interface{}) now takes any value to allow for persisting non-string values directly
- TODO: eliminate all eth specific configs, just a wrapper around globalconf
Diffstat (limited to 'ethutil')
-rw-r--r-- | ethutil/config.go | 46 |
1 files changed, 19 insertions, 27 deletions
diff --git a/ethutil/config.go b/ethutil/config.go index d716005b5..c9b86100b 100644 --- a/ethutil/config.go +++ b/ethutil/config.go @@ -5,29 +5,25 @@ import ( "fmt" "github.com/rakyll/globalconf" "os" - "runtime" ) // Config struct -type config struct { +type ConfigManager struct { Db Database - ExecPath string - Debug bool - Paranoia bool - Ver string - ClientString string - Identifier string + ExecPath string + Debug bool + Paranoia bool conf *globalconf.GlobalConf } -var Config *config +var Config *ConfigManager // Read config // // Initialize Config from Config File -func ReadConfig(ConfigFile string, Datadir string, Identifier string, EnvPrefix string) *config { +func ReadConfig(ConfigFile string, Datadir string, EnvPrefix string) *ConfigManager { if Config == nil { // create ConfigFile if does not exist, otherwise globalconf panic when trying to persist flags _, err := os.Stat(ConfigFile) @@ -44,34 +40,30 @@ func ReadConfig(ConfigFile string, Datadir string, Identifier string, EnvPrefix } else { g.ParseAll() } - Config = &config{ExecPath: Datadir, Debug: true, Ver: "0.5.16", conf: g, Identifier: Identifier, Paranoia: true} - Config.SetClientString("Ethereum(G)") + Config = &ConfigManager{ExecPath: Datadir, Debug: true, conf: g, Paranoia: true} } return Config } -// Set client string -// -func (c *config) SetClientString(str string) { - os := runtime.GOOS - cust := c.Identifier - Config.ClientString = fmt.Sprintf("%s/v%s/%s/%s/Go", str, c.Ver, cust, os) -} - -func (c *config) SetIdentifier(id string) { - c.Identifier = id - c.Set("id", id) -} - // provides persistence for flags -func (c *config) Set(key, value string) { - f := &flag.Flag{Name: key, Value: &confValue{value}} +func (c *ConfigManager) Save(key string, value interface{}) { + f := &flag.Flag{Name: key, Value: newConfValue(value)} c.conf.Set("", f) } +func (c *ConfigManager) Delete(key string) { + c.conf.Delete("", key) +} + +// private type implementing flag.Value type confValue struct { value string } +// generic constructor to allow persising non-string values directly +func newConfValue(value interface{}) *confValue { + return &confValue{fmt.Sprintf("%v", value)} +} + func (self confValue) String() string { return self.value } func (self confValue) Set(s string) error { self.value = s; return nil } |