Files
MQTTLogger/config/config.go

61 lines
1.1 KiB
Go

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,
}
}