package config import ( "os" "strings" "github.com/joho/godotenv" "go.uber.org/zap" ) type Config struct { URI string Username string Password string Topics []string } func NewConfig(logger *zap.Logger) *Config { err := godotenv.Load() if err != nil { logger.Warn("Error loading .env file, using environment variables") } uri := os.Getenv("MQTT_URI") if uri == "" { logger.Fatal("MQTT_URI is not set") } username := os.Getenv("MQTT_USERNAME") if username == "" { logger.Warn("MQTT_USERNAME is not set") } password := os.Getenv("MQTT_PASSWORD") if password == "" { logger.Warn("MQTT_PASSWORD is not set") } topicsEnv := os.Getenv("MQTT_TOPICS") var topics []string if topicsEnv == "" { logger.Warn("MQTT_TOPICS is not set, defaulting to #") topics = []string{"#"} } else { parts := strings.Split(topicsEnv, ",") for _, p := range parts { t := strings.TrimSpace(p) if t != "" { topics = append(topics, t) } } } return &Config{ URI: uri, Username: username, Password: password, Topics: topics, } }