Nik Afiq 1d3e223dbb
All checks were successful
CI / test (push) Successful in 4s
CI / build-ha-gateway (push) Successful in 1m7s
CI / build-discord-bot (push) Successful in 47s
feat: implement structured logging and error handling in discord-bot
2026-04-09 05:06:38 +09:00

44 lines
868 B
Go

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
}