aboutsummaryrefslogtreecommitdiff
path: root/weed/util
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-01-29 09:09:55 -0800
committerChris Lu <chris.lu@gmail.com>2020-01-29 09:09:55 -0800
commitd335f04de6861b571190c13bd7d65e9a0c02f187 (patch)
treead534357d50c4027718a7fe2e60391b6545a7db0 /weed/util
parent27b94cb65b34c084790f0a1884956702ee51acc2 (diff)
downloadseaweedfs-d335f04de6861b571190c13bd7d65e9a0c02f187.tar.xz
seaweedfs-d335f04de6861b571190c13bd7d65e9a0c02f187.zip
support env variables to overwrite toml file
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"))
+}