package infrastructure import ( "github.com/creasty/defaults" "github.com/spf13/viper" ) type Config struct { DBUser string `mapstructure:"DBUser" default:"userpg"` DBName string `mapstructure:"DBName" default:"58blog"` DBPass string `mapstructure:"DBPassword" default:"1205"` DBHost string `mapstructure:"DBHost" default:"localhost"` DBPort string `mapstructure:"DBPort" default:"5432"` AdminName string `mapstructure:"ADMIN_NAME" default:"muts"` AdminPassword string `mapstructure:"ADMIN_PASS" default:"1205"` ImagesPath string `mapstructure:"IMAGES_PATH" default:"./images/"` } func LoadConfig() (config *Config, err error) { config = &Config{} if err = defaults.Set(config); err != nil { return nil, err } viper.SetConfigName("config") viper.SetConfigType("yaml") viper.AddConfigPath(".") viper.AddConfigPath("/etc/58team_blog/") viper.AddConfigPath("/58team_blog/cfgs/") viper.AutomaticEnv() if err = viper.ReadInConfig(); err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); !ok { return nil, err } } if err = viper.Unmarshal(&config); err != nil { return nil, err } return config, nil }