From 07223320af2fd84144ed562c2fc80fc493f927d0 Mon Sep 17 00:00:00 2001 From: piper pentagram Date: Wed, 13 Nov 2024 22:03:57 +0000 Subject: [PATCH] Move the config package to a singleton pattern --- internal/config/config.go | 16 ++++++++++------ internal/logging/logging.go | 15 ++++++++------- main.go | 6 ++---- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index 28472f5..90fc69e 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -16,9 +16,13 @@ type AppConfig struct { LogAddSource bool `yaml:"log_add_source"` } -func Parse() (*AppConfig, error) { - var appConfig *AppConfig +var config *AppConfig +func Get() *AppConfig { + return config +} + +func Init() error { setDefaults() // automatically populate config with any matching environment vars @@ -31,15 +35,15 @@ func Parse() (*AppConfig, error) { err := viper.ReadInConfig() 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 { - return nil, fmt.Errorf("error unmarshaling configs: %s", err) + return fmt.Errorf("error unmarshaling configs: %s", err) } - return appConfig, nil + return nil } func setDefaults() { diff --git a/internal/logging/logging.go b/internal/logging/logging.go index 9f1d81d..22ecd80 100644 --- a/internal/logging/logging.go +++ b/internal/logging/logging.go @@ -16,20 +16,21 @@ var ( logger Logger ) -func Init(appConfig *config.AppConfig) { +func Init() { + cfg := config.Get() lj := &lumberjack.Logger{ - Filename: filepath.Join(appConfig.LogDir, appConfig.LogFile), - MaxSize: appConfig.LogMaxSizeMB, - MaxBackups: appConfig.LogMaxBackups, - MaxAge: appConfig.LogMaxAgeDays, - Compress: appConfig.LogCompression, + Filename: filepath.Join(cfg.LogDir, cfg.LogFile), + MaxSize: cfg.LogMaxSizeMB, + MaxBackups: cfg.LogMaxBackups, + MaxAge: cfg.LogMaxAgeDays, + Compress: cfg.LogCompression, } logger = Logger{ slog.New( slog.NewJSONHandler(lj, &slog.HandlerOptions{ - AddSource: appConfig.LogAddSource, + AddSource: cfg.LogAddSource, }), ), } diff --git a/main.go b/main.go index d4a4d94..1c072cb 100644 --- a/main.go +++ b/main.go @@ -13,8 +13,6 @@ import ( var ( token = flag.String("token", "", "Bot authentication token") - - appConfig *config.AppConfig ) func main() { @@ -22,13 +20,13 @@ func main() { var err error - appConfig, err = config.Parse() + err = config.Init() if err != nil { log.Fatal(err) } - logging.Init(appConfig) + logging.Init() err = startBot()