43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
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
|
|
}
|