2020-07-13 20:33:20 +08:00
|
|
|
package config
|
|
|
|
|
|
|
|
import (
|
2020-08-15 23:34:37 +08:00
|
|
|
"ferry/pkg/logger"
|
2020-07-13 20:33:20 +08:00
|
|
|
"fmt"
|
|
|
|
"io/ioutil"
|
|
|
|
"os"
|
|
|
|
"strings"
|
2020-08-15 23:34:37 +08:00
|
|
|
|
|
|
|
"github.com/spf13/viper"
|
2020-07-13 20:33:20 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
var cfgDatabase *viper.Viper
|
|
|
|
var cfgApplication *viper.Viper
|
|
|
|
var cfgJwt *viper.Viper
|
|
|
|
var cfgSsl *viper.Viper
|
|
|
|
|
|
|
|
//载入配置文件
|
|
|
|
func ConfigSetup(path string) {
|
|
|
|
viper.SetConfigFile(path)
|
|
|
|
content, err := ioutil.ReadFile(path)
|
|
|
|
if err != nil {
|
2020-08-15 23:34:37 +08:00
|
|
|
logger.Fatal(fmt.Sprintf("Read config file fail: %s", err.Error()))
|
2020-07-13 20:33:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
//Replace environment variables
|
|
|
|
err = viper.ReadConfig(strings.NewReader(os.ExpandEnv(string(content))))
|
|
|
|
if err != nil {
|
2020-08-15 23:34:37 +08:00
|
|
|
logger.Fatal(fmt.Sprintf("Parse config file fail: %s", err.Error()))
|
2020-07-13 20:33:20 +08:00
|
|
|
}
|
|
|
|
|
2020-08-15 23:34:37 +08:00
|
|
|
// 数据库初始化
|
2020-07-13 20:33:20 +08:00
|
|
|
cfgDatabase = viper.Sub("settings.database")
|
|
|
|
if cfgDatabase == nil {
|
|
|
|
panic("config not found settings.database")
|
|
|
|
}
|
|
|
|
DatabaseConfig = InitDatabase(cfgDatabase)
|
|
|
|
|
2020-08-15 23:34:37 +08:00
|
|
|
// 启动参数
|
2020-07-13 20:33:20 +08:00
|
|
|
cfgApplication = viper.Sub("settings.application")
|
|
|
|
if cfgApplication == nil {
|
|
|
|
panic("config not found settings.application")
|
|
|
|
}
|
|
|
|
ApplicationConfig = InitApplication(cfgApplication)
|
|
|
|
|
2020-08-15 23:34:37 +08:00
|
|
|
// Jwt初始化
|
2020-07-13 20:33:20 +08:00
|
|
|
cfgJwt = viper.Sub("settings.jwt")
|
|
|
|
if cfgJwt == nil {
|
|
|
|
panic("config not found settings.jwt")
|
|
|
|
}
|
|
|
|
JwtConfig = InitJwt(cfgJwt)
|
|
|
|
|
2020-08-15 23:34:37 +08:00
|
|
|
// ssl 配置
|
2020-07-13 20:33:20 +08:00
|
|
|
cfgSsl = viper.Sub("settings.ssl")
|
|
|
|
if cfgSsl == nil {
|
|
|
|
panic("config not found settings.ssl")
|
|
|
|
}
|
|
|
|
SslConfig = InitSsl(cfgSsl)
|
|
|
|
|
2020-08-15 23:34:37 +08:00
|
|
|
// 日志配置
|
|
|
|
logger.Init()
|
|
|
|
}
|
2020-07-13 20:33:20 +08:00
|
|
|
|
|
|
|
func SetConfig(configPath string, key string, value interface{}) {
|
|
|
|
viper.AddConfigPath(configPath)
|
|
|
|
viper.Set(key, value)
|
2020-08-15 23:34:37 +08:00
|
|
|
_ = viper.WriteConfig()
|
2020-07-13 20:33:20 +08:00
|
|
|
}
|