load_config.go 560 B

1234567891011121314151617181920212223242526272829
  1. package config
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/mitchellh/mapstructure"
  6. "github.com/spf13/viper"
  7. )
  8. var WorkDir = os.Getenv("MQTT_WORK_DIR")
  9. func Initialize(path string, cfgStruct interface{}) error {
  10. if WorkDir == "" {
  11. WorkDir = "."
  12. }
  13. dir := fmt.Sprintf("%s/config/%s", WorkDir, path)
  14. viper.SetConfigType("yaml")
  15. viper.SetConfigFile(dir)
  16. if err := viper.ReadInConfig(); err != nil {
  17. return err
  18. }
  19. if err := viper.Unmarshal(&cfgStruct, func(c *mapstructure.DecoderConfig) {
  20. c.TagName = "yaml"
  21. }); err != nil {
  22. return err
  23. }
  24. return nil
  25. }