aboutsummaryrefslogtreecommitdiff
path: root/weed/util
diff options
context:
space:
mode:
Diffstat (limited to 'weed/util')
-rw-r--r--weed/util/config.go13
-rw-r--r--weed/util/config_test.go24
2 files changed, 36 insertions, 1 deletions
diff --git a/weed/util/config.go b/weed/util/config.go
index 7b86b749e..dfbfdbd82 100644
--- a/weed/util/config.go
+++ b/weed/util/config.go
@@ -1,8 +1,11 @@
package util
import (
- "github.com/chrislusf/seaweedfs/weed/glog"
+ "strings"
+
"github.com/spf13/viper"
+
+ "github.com/chrislusf/seaweedfs/weed/glog"
)
type Configuration interface {
@@ -37,3 +40,11 @@ func LoadConfiguration(configFileName string, required bool) (loaded bool) {
return true
}
+
+func GetViper() *viper.Viper {
+ v := viper.GetViper()
+ v.AutomaticEnv()
+ v.SetEnvPrefix("weed")
+ v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
+ return v
+}
diff --git a/weed/util/config_test.go b/weed/util/config_test.go
new file mode 100644
index 000000000..659814a4a
--- /dev/null
+++ b/weed/util/config_test.go
@@ -0,0 +1,24 @@
+package util
+
+import (
+ "os"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestAllKeysWithEnv(t *testing.T) {
+
+ v := GetViper()
+ v.BindEnv("id")
+ v.BindEnv("foo", "foo")
+
+ // bind and define environment variables (including a nested one)
+ os.Setenv("WEED_ID", "13")
+ os.Setenv("WEED_FOO_BAR", "baz")
+
+ sub := v.Sub("foo")
+
+ assert.Equal(t, "13", v.GetString("id"))
+ assert.Equal(t, "baz", sub.GetString("bar"))
+}