config.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package config
  2. import (
  3. "errors"
  4. "github.com/spf13/viper"
  5. )
  6. type Config struct {
  7. EveryTime string
  8. SSHKeyFullPath string
  9. SSHKeyPwd string
  10. CloneProjectDesSaveDir string
  11. GitProjectUrl string
  12. DesURL string
  13. WhenSubSupplierInvalidWebHook string
  14. }
  15. // GetConfig 统一获取配置的接口
  16. func GetConfig() *Config {
  17. configViper, err := initConfigure()
  18. if err != nil {
  19. panic("GetConfig - initConfigure something " + err.Error())
  20. }
  21. config, err = readConfig(configViper)
  22. if err != nil {
  23. panic("GetConfig - readConfig something " + err.Error())
  24. }
  25. return config
  26. }
  27. // initConfigure 初始化配置文件实例
  28. func initConfigure() (*viper.Viper, error) {
  29. v := viper.New()
  30. v.SetConfigName("something") // 设置文件名称(无后缀)
  31. v.SetConfigType("yaml") // 设置后缀名 {"1.6以后的版本可以不设置该后缀"}
  32. v.AddConfigPath(".") // 设置文件所在路径
  33. err := v.ReadInConfig()
  34. if err != nil {
  35. return nil, errors.New("error reading something config:" + err.Error())
  36. }
  37. return v, nil
  38. }
  39. // readConfig 读取配置文件
  40. func readConfig(viper *viper.Viper) (*Config, error) {
  41. conf := &Config{}
  42. err := viper.Unmarshal(conf)
  43. if err != nil {
  44. return nil, err
  45. }
  46. return conf, nil
  47. }
  48. var (
  49. config *Config
  50. )