Files
mediaproxy/env.go
T
2025-11-18 11:35:19 +01:00

70 lines
1.3 KiB
Go

package main
import (
"log/slog"
"os"
"strconv"
"strings"
"time"
)
func getEnvLogLevel(key string, fallback slog.Level) slog.Level {
if value, ok := os.LookupEnv(key); ok {
switch strings.ToUpper(value) {
case "DEBUG":
return slog.LevelDebug
case "INFO":
return slog.LevelInfo
case "WARN", "WARNING":
return slog.LevelWarn
case "ERROR", "ERR":
return slog.LevelError
}
}
return fallback
}
func getEnvDuration(key string, fallback time.Duration) time.Duration {
if value, ok := os.LookupEnv(key); ok {
if duration, err := time.ParseDuration(value); err == nil {
return duration
}
}
return fallback
}
func getEnvString(key string, fallback string) string {
if value, ok := os.LookupEnv(key); ok {
return value
}
return fallback
}
func getEnvStringSlice(key string, fallback []string) []string {
if value, ok := os.LookupEnv(key); ok {
if value == "" {
return []string{}
}
return strings.Split(value, ",")
}
return fallback
}
func getEnvInt(key string, fallback int) int {
if value, ok := os.LookupEnv(key); ok {
if i, err := strconv.Atoi(value); err == nil {
return i
}
}
return fallback
}
func getEnvInt64(key string, fallback int64) int64 {
if value, ok := os.LookupEnv(key); ok {
if i, err := strconv.ParseInt(value, 10, 64); err == nil {
return i
}
}
return fallback
}