Files
mediaproxy/env.go
2025-09-14 18:54:20 +02:00

63 lines
1.2 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 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
}