/
config.go
55 lines (42 loc) · 1.04 KB
/
config.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
package config
import (
"os"
"path"
"github.com/gin-gonic/gin"
"github.com/spf13/viper"
)
func getStringDefault(v *viper.Viper, key string, value string) string {
v.SetDefault(key, value)
return v.GetString(key)
}
func getIntDefault(v *viper.Viper, key string, value int) int {
v.SetDefault(key, value)
return v.GetInt(key)
}
type Config struct {
AppLevel string
AppPort int
DataUpload string
DataPublic string
}
func load() Config {
fang := viper.New()
fang.AutomaticEnv()
fang.SetConfigName("config")
fang.SetConfigType("yaml")
fang.AddConfigPath(".")
value, available := os.LookupEnv("CONFIG_LOCATION")
if available {
fang.AddConfigPath(value)
}
_ = fang.ReadInConfig()
homeDir, _ := os.UserHomeDir()
return Config{
AppLevel: getStringDefault(fang, "app.level", gin.ReleaseMode),
AppPort: getIntDefault(fang, "app.port", 1427),
DataUpload: path.Join(homeDir, "Documents/siwi/upload"),
DataPublic: path.Join(homeDir, "Documents/siwi/public"),
}
}
var config = load()
func Cfg() *Config { return &config }