From f90b8a1c67fd65ebbce75a64129c5644596e7f1a Mon Sep 17 00:00:00 2001 From: Ruidy Date: Wed, 21 Aug 2024 09:48:47 +0200 Subject: [PATCH] improve config setup improve config setup --- config/config.go | 28 ++++++++++++++++++++++++++++ main.go | 4 +--- 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 config/config.go diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..4d8a41f --- /dev/null +++ b/config/config.go @@ -0,0 +1,28 @@ +package config + +import ( + "os" + + "github.com/joho/godotenv" + "github.com/labstack/gommon/log" +) + +type Config map[string]string + +var DefaultConfig = Config{ + "PORT": "8000", +} + +func NewConfig() func(string) string { + _ = godotenv.Load() + log.Info("loaded env variables") + + return func(key string) string { + if value := os.Getenv(key); value != "" { + return value + } else { + log.Warnf("no value found for %s using defaults", key) + return DefaultConfig[key] + } + } +} diff --git a/main.go b/main.go index 9a06f25..cdedde8 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,6 @@ import ( "strings" "github.com/getsentry/sentry-go" - "github.com/joho/godotenv" "gorm.io/driver/postgres" "gorm.io/gorm" @@ -28,9 +27,8 @@ var static embed.FS func main() { ctx := context.Background() - _ = godotenv.Load() - if err := run(ctx, os.Getenv); err != nil { + if err := run(ctx, config.NewConfig()); err != nil { fmt.Fprintf(os.Stderr, "%s\n", err) os.Exit(1) }