first commit
This commit is contained in:
50
config.go
Normal file
50
config.go
Normal file
@@ -0,0 +1,50 @@
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user