package config import ( "errors" "os" ) type Config struct { DiscordToken string GuildID string HAGatewayAddr string OTELEndpoint string LogLevel string LogFormat string } func Load() (*Config, error) { token := os.Getenv("DISCORD_TOKEN") if token == "" { return nil, errors.New("DISCORD_TOKEN is required but not set") } addr := os.Getenv("HA_GATEWAY_ADDR") if addr == "" { return nil, errors.New("HA_GATEWAY_ADDR is required but not set") } return &Config{ DiscordToken: token, GuildID: os.Getenv("GUILD_ID"), HAGatewayAddr: addr, OTELEndpoint: os.Getenv("OTEL_ENDPOINT"), LogLevel: getenvDefault("LOG_LEVEL", "info"), LogFormat: getenvDefault("LOG_FORMAT", "json"), }, nil } func getenvDefault(key, fallback string) string { if v := os.Getenv(key); v != "" { return v } return fallback }