Skip to content

Commit

Permalink
add environment variable config
Browse files Browse the repository at this point in the history
  • Loading branch information
mpoegel committed Dec 25, 2023
1 parent d5c6420 commit db90a32
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions internal/pizza/config.go
Expand Up @@ -3,6 +3,8 @@ package pizza
import (
"fmt"
"os"
"strconv"
"strings"
"time"

"go.uber.org/zap"
Expand Down Expand Up @@ -30,6 +32,8 @@ type Config struct {
ShutdownTimeout time.Duration `yaml:"shutdownTimeout"`
Calendar CalendarConfig `yaml:"calendar"`
MetricsPort int `yaml:"metricsPort"`
UseSQLite bool `yaml:"useSQLite"`
DBFile string `yaml:"dbFile"`
}

type CalendarConfig struct {
Expand All @@ -47,3 +51,48 @@ func LoadConfig(filename string) (Config, error) {
err = yaml.Unmarshal(rawBytes, &config)
return config, err
}

func loadStrEnv(name, defaultVal string) string {
val, ok := os.LookupEnv(name)
if !ok {
return defaultVal
}
return val
}

func loadBoolEnv(name string, defaultVal bool) bool {
val, ok := os.LookupEnv(name)
if !ok {
return defaultVal
}
return strings.ToLower(val) == "true" || val == "1"
}

func loadIntEnv(name string, defaultVal int) int {
valStr, ok := os.LookupEnv(name)
if !ok {
return defaultVal
}
val, err := strconv.Atoi(valStr)
if err != nil {
return defaultVal
}
return val
}

func LoadConfigEnv(filename string) Config {
return Config{
Port: loadIntEnv("PORT", 5000),
ReadTimeout: time.Duration(loadIntEnv("READ_TIMEOUT", 3)) * time.Second,
WriteTimeout: time.Duration(loadIntEnv("WRITE_TIMEOUT", 3)) * time.Second,
ShutdownTimeout: time.Duration(loadIntEnv("SHUTDOWN_TIMEOUT", 5)) * time.Second,
Calendar: CalendarConfig{
CredentialFile: loadStrEnv("CREDENTIAL_FILE", "credentials.json"),
TokenFile: loadStrEnv("TOKEN_FILE", "token.json"),
ID: loadStrEnv("CALENDAR_ID", "primary"),
},
MetricsPort: loadIntEnv("METRICS_PORT", 5050),
UseSQLite: loadBoolEnv("USE_SQLITE", true),
DBFile: loadStrEnv("DBFILE", "pizza.db"),
}
}

0 comments on commit db90a32

Please sign in to comment.