aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzelig <viktor.tron@gmail.com>2014-07-04 00:30:51 +0800
committerzelig <viktor.tron@gmail.com>2014-07-04 00:30:51 +0800
commitf02602d02d12204a10c2aa9d1d43332b1be2fe0a (patch)
treec8de787667d4d2d5a4303d08c59567965d8dfba4
parent90c2064640984be95e493c57c3dc8dd5134e23e9 (diff)
downloaddexon-f02602d02d12204a10c2aa9d1d43332b1be2fe0a.tar.gz
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
-rw-r--r--ethutil/config.go46
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 }