-
Notifications
You must be signed in to change notification settings - Fork 7
/
util.go
100 lines (88 loc) · 2.66 KB
/
util.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package util
import (
"os"
"github.com/sirupsen/logrus"
"github.com/spf13/viper"
)
const (
// DefaultDir is default config file search dir
DefaultDir = "/etc/paas/"
// DefaultFileName is default config file name
DefaultFileName = "redis"
// DefaultEnvPrefixKey is default prefix of environment variable
DefaultEnvPrefixKey = ""
// EnvPrefixKey is prefix of environment variable
EnvPrefixKey = "ENV_PREFIX"
// ConfigDirKey is key to get file search path from environment variable
ConfigDirKey = "CONFIG_DIR"
// ConfigNameKey is key to get file name from environment variable
ConfigNameKey = "CONFIG_NAME"
)
//LoadParamsFromEnv will use env params to create viper.Viper
func LoadParamsFromEnv() *viper.Viper {
v := viper.New()
prefix := os.Getenv(EnvPrefixKey)
if prefix == "" {
prefix = DefaultEnvPrefixKey
logrus.Warnf("ENV_PREFIX not exist in env Use default env prefix: %s", DefaultEnvPrefixKey)
} else {
logrus.Warnf("Use EnvPrefixKey: %s", prefix)
}
v.SetEnvPrefix(prefix)
v.AutomaticEnv()
return v
}
//LoadParamsFromVolume wile use volume params create viper.Viper
func LoadParamsFromVolume() (*viper.Viper, error) {
v := viper.New()
configDir := os.Getenv(ConfigDirKey)
fileName := os.Getenv(ConfigNameKey)
//Use default DIR
if configDir == "" {
configDir = DefaultDir
logrus.Warnf("ConfigDirKey not exist in env Use default dir %s", DefaultDir)
} else {
logrus.Infof("Use Config_Dir: %s", configDir)
}
////Use default config file name
if fileName == "" {
fileName = DefaultFileName
logrus.Warnf("ConfigNameKey not exist in env Use default name %s", DefaultFileName)
} else {
logrus.Infof("Use CONFIG_NAME: %s", fileName)
}
v.SetConfigName(fileName)
v.AddConfigPath(configDir)
return v, v.ReadInConfig()
}
func LoadMixedParams() (*viper.Viper, error) {
v := viper.New()
configDir := os.Getenv(ConfigDirKey)
fileName := os.Getenv(ConfigNameKey)
prefix := os.Getenv(EnvPrefixKey)
if prefix == "" {
prefix = DefaultEnvPrefixKey
logrus.Warnf("ENV_PREFIX not exist in env Use default env prefix: %s", DefaultEnvPrefixKey)
} else {
logrus.Warnf("Use EnvPrefixKey: %s", prefix)
}
//Use default DIR
if configDir == "" {
configDir = DefaultDir
logrus.Warnf("ConfigDirKey not exist in env Use default dir %s", DefaultDir)
} else {
logrus.Infof("Use Config_Dir: %s", configDir)
}
//Use default config file name
if fileName == "" {
fileName = DefaultFileName
logrus.Warnf("ConfigNameKey not exist in env Use default name %s", DefaultFileName)
} else {
logrus.Infof("Use CONFIG_NAME: %s", fileName)
}
v.SetConfigName(fileName)
v.AddConfigPath(configDir)
v.SetEnvPrefix(prefix)
v.AutomaticEnv()
return v, v.ReadInConfig()
}