62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package config
|
|
|
|
import (
|
|
"ca-mini/pkg/utils"
|
|
"fmt"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
type AppConfig struct {
|
|
Name string `mapstructure:"name"`
|
|
Version string `mapstructure:"version"`
|
|
CopyrightYear int `mapstructure:"copyrightYear"`
|
|
}
|
|
|
|
type ServerConfig struct {
|
|
Port int `mapstructure:"port"`
|
|
ContextPath string `mapstructure:"context-path"`
|
|
}
|
|
|
|
type LoggingConfig struct {
|
|
Level string `mapstructure:"level"`
|
|
Path string `mapstructure:"path"`
|
|
}
|
|
|
|
type DatasourceConfig struct {
|
|
Url string `mapstructure:"url"`
|
|
Username string `mapstructure:"username"`
|
|
Password string `mapstructure:"password"`
|
|
}
|
|
|
|
type Config struct {
|
|
App AppConfig `mapstructure:"app"`
|
|
Server ServerConfig `mapstructure:"server"`
|
|
Datasource DatasourceConfig `mapstructure:"datasource"`
|
|
Logging LoggingConfig `mapstructure:"logging"`
|
|
ServerAddress string
|
|
}
|
|
|
|
func Load() (*Config, error) {
|
|
viper.SetConfigName("config")
|
|
viper.SetConfigType("yaml")
|
|
|
|
viper.AddConfigPath(utils.WORK_PATH + "/conf")
|
|
|
|
err := viper.ReadInConfig()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var config Config
|
|
err = viper.Unmarshal(&config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// 设置ServerAddress
|
|
config.ServerAddress = fmt.Sprintf(":%d", config.Server.Port)
|
|
|
|
return &config, nil
|
|
}
|