WayfinderAK 6f7549d439
All checks were successful
build-image / docker (push) Successful in 53s
Implement phase 1 foundations
2026-07-03 20:14:06 -08:00

84 lines
2.1 KiB
Go

package config
import (
"os"
"strconv"
"time"
)
type Config struct {
Addr string
DataPath string
PollInterval time.Duration
LokiURL string
LokiTenantID string
LokiUsername string
LokiPassword string
DryRunActions bool
AnalysisProvider string
AnalysisEndpoint string
AnalysisToken string
OllamaURL string
OllamaModel string
AuthUsername string
AuthPassword string
}
func Load() Config {
return Config{
Addr: env("LOG_GUARDIAN_ADDR", ":8080"),
DataPath: env("LOG_GUARDIAN_DATA_PATH", "/data/config.json"),
PollInterval: durationEnv("LOG_GUARDIAN_POLL_INTERVAL", 1*time.Minute),
LokiURL: trimRightSlash(env("LOKI_URL", "http://loki:3100")),
LokiTenantID: env("LOKI_TENANT_ID", ""),
LokiUsername: env("LOKI_USERNAME", ""),
LokiPassword: env("LOKI_PASSWORD", ""),
DryRunActions: boolEnv("LOG_GUARDIAN_DRY_RUN_ACTIONS", true),
AnalysisProvider: env("LOG_GUARDIAN_ANALYSIS_PROVIDER", "none"),
AnalysisEndpoint: env("LOG_GUARDIAN_ANALYSIS_ENDPOINT", ""),
AnalysisToken: env("LOG_GUARDIAN_ANALYSIS_TOKEN", ""),
OllamaURL: trimRightSlash(env("LOG_GUARDIAN_OLLAMA_URL", "http://ollama:11434")),
OllamaModel: env("LOG_GUARDIAN_OLLAMA_MODEL", "llama3.1"),
AuthUsername: env("LOG_GUARDIAN_AUTH_USERNAME", ""),
AuthPassword: env("LOG_GUARDIAN_AUTH_PASSWORD", ""),
}
}
func env(key, fallback string) string {
if value := os.Getenv(key); value != "" {
return value
}
return fallback
}
func boolEnv(key string, fallback bool) bool {
value := os.Getenv(key)
if value == "" {
return fallback
}
parsed, err := strconv.ParseBool(value)
if err != nil {
return fallback
}
return parsed
}
func durationEnv(key string, fallback time.Duration) time.Duration {
value := os.Getenv(key)
if value == "" {
return fallback
}
parsed, err := time.ParseDuration(value)
if err != nil {
return fallback
}
return parsed
}
func trimRightSlash(value string) string {
for len(value) > 1 && value[len(value)-1] == '/' {
value = value[:len(value)-1]
}
return value
}