51 lines
899 B
Go
51 lines
899 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/currantlabs/ble/linux"
|
|
"gopkg.in/ini.v1"
|
|
)
|
|
|
|
// Config represents a configuration
|
|
type Config struct {
|
|
MQTT MQTT
|
|
Host *linux.Device
|
|
}
|
|
|
|
// NewConfig returns a new Config
|
|
func NewConfig(file string) (*Config, error) {
|
|
log.Printf("[Config] Loading Configuration (%s)", file)
|
|
cfg, err := ini.Load(file)
|
|
if err != nil {
|
|
return &Config{}, err
|
|
}
|
|
|
|
sec, err := cfg.GetSection("MQTT")
|
|
if err != nil {
|
|
return &Config{}, err
|
|
}
|
|
if !sec.HasKey("host") {
|
|
return &Config{}, fmt.Errorf("Configuration requires MQTT host")
|
|
}
|
|
|
|
if !sec.HasKey("port") {
|
|
log.Print("MQTT port not defined; defaulting to 1883")
|
|
sec.NewKey("port", "1883")
|
|
}
|
|
|
|
mqtt := MQTT{
|
|
Host: sec.Key("host").String(),
|
|
Port: sec.Key("port").String(),
|
|
User: sec.Key("user").String(),
|
|
Pass: sec.Key("pass").String(),
|
|
}
|
|
|
|
|
|
return &Config{
|
|
MQTT: mqtt,
|
|
}, nil
|
|
}
|
|
|