Files
sjy01-image-proc/pkg/config/viper.go
2024-05-30 11:46:50 +08:00

45 lines
747 B
Go

package config
import (
"fmt"
"strings"
"log"
"github.com/fsnotify/fsnotify"
"github.com/spf13/viper"
)
var viperInst *viper.Viper
func InitViper(cfg string) *viper.Viper {
v := viper.New()
v.AutomaticEnv()
v.SetEnvPrefix("sjy01_ip")
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
v.SetConfigFile(cfg)
v.SetConfigType("yaml")
err := v.ReadInConfig()
if err != nil {
log.Println(fmt.Errorf("fatal error config file: %s", err.Error()))
return nil
}
v.WatchConfig()
v.OnConfigChange(func(e fsnotify.Event) {
if err := v.Unmarshal(&GCONFIG); err != nil {
fmt.Println(err)
}
log.Println("config file changed", e.Name, err)
})
if err := v.Unmarshal(&GCONFIG); err != nil {
fmt.Println(err)
}
return v
}