config.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package config
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "log"
  6. "os"
  7. "strings"
  8. "github.com/spf13/viper"
  9. )
  10. // 数据库配置项
  11. var cfgDatabase *viper.Viper
  12. // 应用配置项
  13. var cfgApplication *viper.Viper
  14. // 应用配置项
  15. var mqttCfg *viper.Viper
  16. // Token配置项
  17. var cfgJwt *viper.Viper
  18. // Log配置项
  19. var cfgLogger *viper.Viper
  20. // Ssl配置项 非必须
  21. var cfgSsl *viper.Viper
  22. // 代码生成配置项 非必须
  23. var cfgGen *viper.Viper
  24. //载入配置文件
  25. func Setup(path string) {
  26. viper.SetConfigFile(path)
  27. content, err := ioutil.ReadFile(path)
  28. if err != nil {
  29. log.Fatal(fmt.Sprintf("Read config file fail: %s", err.Error()))
  30. }
  31. //Replace environment variables
  32. err = viper.ReadConfig(strings.NewReader(os.ExpandEnv(string(content))))
  33. if err != nil {
  34. log.Fatal(fmt.Sprintf("Parse config file fail: %s", err.Error()))
  35. }
  36. cfgDatabase = viper.Sub("settings.database")
  37. if cfgDatabase == nil {
  38. panic("No found settings.database in the configuration")
  39. }
  40. DatabaseConfig = InitDatabase(cfgDatabase)
  41. cfgApplication = viper.Sub("settings.application")
  42. if cfgApplication == nil {
  43. panic("No found settings.application in the configuration")
  44. }
  45. ApplicationConfig = InitApplication(cfgApplication)
  46. mqttCfg = viper.Sub("settings.mqttcfg")
  47. if cfgApplication == nil {
  48. panic("No found settings.mqttcfg in the configuration")
  49. }
  50. MqttCfgInfo = InitMqttCfg(mqttCfg)
  51. cfgJwt = viper.Sub("settings.jwt")
  52. if cfgJwt == nil {
  53. panic("No found settings.jwt in the configuration")
  54. }
  55. JwtConfig = InitJwt(cfgJwt)
  56. cfgLogger = viper.Sub("settings.logger")
  57. if cfgLogger == nil {
  58. panic("No found settings.logger in the configuration")
  59. }
  60. LoggerConfig = InitLog(cfgLogger)
  61. cfgSsl = viper.Sub("settings.ssl")
  62. if cfgSsl == nil {
  63. // Ssl不是系统强制要求的配置,默认可以不用配置,将设置为关闭状态
  64. fmt.Println("warning config not found settings.ssl in the configuration")
  65. SslConfig = new(Ssl)
  66. SslConfig.Enable = false
  67. } else {
  68. SslConfig = InitSsl(cfgSsl)
  69. }
  70. cfgGen = viper.Sub("settings.gen")
  71. if cfgGen == nil {
  72. panic("No found settings.gen")
  73. }
  74. GenConfig = InitGen(cfgGen)
  75. }