package config import ( "fmt" "os" "strings" ) // Config contains all runtime settings sourced from environment variables. type Config struct { Port string ServiceName string Environment string LogLevel string OTLPEndpoint string } func Load() Config { return Config{ Port: getEnv("PORT", "8080"), ServiceName: getEnv("SERVICE_NAME", "switchbot-api"), Environment: getEnv("ENV", "local"), LogLevel: getEnv("LOG_LEVEL", "info"), OTLPEndpoint: strings.TrimSpace(os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT")), } } func (c Config) Addr() string { if strings.HasPrefix(c.Port, ":") { return c.Port } return fmt.Sprintf(":%s", c.Port) } func getEnv(key, fallback string) string { if value, ok := os.LookupEnv(key); ok { trimmed := strings.TrimSpace(value) if trimmed != "" { return trimmed } } return fallback }