Move the config package to a singleton pattern

This commit is contained in:
piper pentagram 2024-11-13 22:03:57 +00:00
parent abb19b8748
commit 07223320af
3 changed files with 20 additions and 17 deletions

View file

@ -16,9 +16,13 @@ type AppConfig struct {
LogAddSource bool `yaml:"log_add_source"` LogAddSource bool `yaml:"log_add_source"`
} }
func Parse() (*AppConfig, error) { var config *AppConfig
var appConfig *AppConfig
func Get() *AppConfig {
return config
}
func Init() error {
setDefaults() setDefaults()
// automatically populate config with any matching environment vars // automatically populate config with any matching environment vars
@ -31,15 +35,15 @@ func Parse() (*AppConfig, error) {
err := viper.ReadInConfig() err := viper.ReadInConfig()
if err != nil { if err != nil {
return nil, fmt.Errorf("error reading configs: %s", err) return fmt.Errorf("error reading configs: %s", err)
} }
err = viper.Unmarshal(&appConfig) err = viper.Unmarshal(&config)
if err != nil { if err != nil {
return nil, fmt.Errorf("error unmarshaling configs: %s", err) return fmt.Errorf("error unmarshaling configs: %s", err)
} }
return appConfig, nil return nil
} }
func setDefaults() { func setDefaults() {

View file

@ -16,20 +16,21 @@ var (
logger Logger logger Logger
) )
func Init(appConfig *config.AppConfig) { func Init() {
cfg := config.Get()
lj := &lumberjack.Logger{ lj := &lumberjack.Logger{
Filename: filepath.Join(appConfig.LogDir, appConfig.LogFile), Filename: filepath.Join(cfg.LogDir, cfg.LogFile),
MaxSize: appConfig.LogMaxSizeMB, MaxSize: cfg.LogMaxSizeMB,
MaxBackups: appConfig.LogMaxBackups, MaxBackups: cfg.LogMaxBackups,
MaxAge: appConfig.LogMaxAgeDays, MaxAge: cfg.LogMaxAgeDays,
Compress: appConfig.LogCompression, Compress: cfg.LogCompression,
} }
logger = Logger{ logger = Logger{
slog.New( slog.New(
slog.NewJSONHandler(lj, &slog.HandlerOptions{ slog.NewJSONHandler(lj, &slog.HandlerOptions{
AddSource: appConfig.LogAddSource, AddSource: cfg.LogAddSource,
}), }),
), ),
} }

View file

@ -13,8 +13,6 @@ import (
var ( var (
token = flag.String("token", "", "Bot authentication token") token = flag.String("token", "", "Bot authentication token")
appConfig *config.AppConfig
) )
func main() { func main() {
@ -22,13 +20,13 @@ func main() {
var err error var err error
appConfig, err = config.Parse() err = config.Init()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
logging.Init(appConfig) logging.Init()
err = startBot() err = startBot()