From 94ceede429dc807b54ceab0f27d74b98c94dc5ac Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 11 Aug 2024 22:02:21 +0300 Subject: can configre cron interval --- internal/config/config.go | 8 ++++---- internal/config/server/server.go | 24 ++++++++---------------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index e078bed..1ebfc68 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -27,7 +27,7 @@ func FromFile[T any](configFile string) (T, error) { } // Set config from envoronment variable if present, e.g. hansWurst from GOS_HANS_WURST -func FromENV(keys ...string) string { +func EnvToStr(keys ...string) string { for _, key := range keys { if key == "" { continue @@ -43,7 +43,7 @@ func FromENV(keys ...string) string { return "" } -func IntFromENV(keys ...any) int { +func EnvToInt(keys ...any) int { for _, key := range keys { switch key := key.(type) { case string: @@ -54,8 +54,8 @@ func IntFromENV(keys ...any) int { if strValue == "" { continue } - if value, err := strconv.Atoi(strValue); err == nil { - return value + if intValue, err := strconv.Atoi(strValue); err == nil { + return intValue } case int: return key diff --git a/internal/config/server/server.go b/internal/config/server/server.go index 69bfae2..d46a32a 100644 --- a/internal/config/server/server.go +++ b/internal/config/server/server.go @@ -4,7 +4,6 @@ import ( "fmt" "log" "os" - "strconv" "strings" "codeberg.org/snonux/gos/internal/config" @@ -24,14 +23,14 @@ type ServerConfig struct { func New(configFile string) (ServerConfig, error) { conf, _ := config.FromFile[ServerConfig](configFile) - conf.ListenAddr = config.FromENV("GOS_LISTEN_ADDR", conf.ListenAddr, "localhost:8080") - conf.Partner = config.FromENV("GOS_PARTNER", conf.Partner) - conf.APIKey = config.FromENV("GOS_API_KEY", conf.APIKey) - conf.DataDir = config.FromENV("GOS_DATA_DIR", conf.DataDir, "data") - conf.EmailTo = config.FromENV("GOS_EMAIL_TO", conf.EmailTo) - conf.EmailFrom = config.FromENV("GOS_EMAIL_FROM", conf.EmailFrom) + conf.ListenAddr = config.StrFromENV("GOS_LISTEN_ADDR", conf.ListenAddr, "localhost:8080") + conf.Partner = config.StrFromENV("GOS_PARTNER", conf.Partner) + conf.APIKey = config.StrFromENV("GOS_API_KEY", conf.APIKey) + conf.DataDir = config.StrFromENV("GOS_DATA_DIR", conf.DataDir, "data") + conf.EmailTo = config.StrFromENV("GOS_EMAIL_TO", conf.EmailTo) + conf.EmailFrom = config.StrFromENV("GOS_EMAIL_FROM", conf.EmailFrom) - conf.SMTPServer = config.FromENV("GOS_SMTP_SERVER", conf.SMTPServer) + conf.SMTPServer = config.StrFromENV("GOS_SMTP_SERVER", conf.SMTPServer) if conf.SMTPServer == "" { hostname, err := os.Hostname() if err != nil { @@ -41,14 +40,7 @@ func New(configFile string) (ServerConfig, error) { log.Println("Set SMTPServer to " + conf.SMTPServer) } - // TODO: When there are more int parsing cases in the config, use generic? config.FromENV? - if conf.CRONMergeIntervalS == 0 { - var err error - if conf.CRONMergeIntervalS, err = strconv.Atoi(config.FromENV("GOS_CRON_MERGE_INTERVAL", "3600")); err != nil { - return conf, err - } - } - + conf.CRONMergeIntervalS = config.IntFromENV("GOS_CRON_MERGE_INTERVAL", 3600) return conf, nil } -- cgit v1.2.3