schnutibox/internal/config/config.go

61 lines
1.1 KiB
Go
Raw Normal View History

2021-03-30 19:59:26 +02:00
//nolint:gochecknoglobals,goerr113
package config
2021-05-05 08:32:35 +02:00
import (
"fmt"
api "go.xsfx.dev/schnutibox/pkg/api/v1"
)
2021-03-30 19:59:26 +02:00
var Cfg Config
type Config struct {
// Reader is used to configure the RFID Reader.
Reader struct {
Dev string `mapstructure:"Dev"`
} `mapstructure:"Reader"`
// Box is used to configure a webinterface.
Box struct {
Hostname string `mapstructure:"Hostname"`
Port int `mapstructure:"Port"`
} `mapstructure:"Box"`
// MPD contains the connection details for the Music Player Daemon.
MPD struct {
Hostname string
Port int
} `mapstructure:"MPD"`
// Meta contains all meta RFID's.
Meta struct {
Stop string `mapstructure:"Stop"`
} `mapstructure:"Meta"`
// Tracks contains all RFID's and its MPD URLs.
Tracks map[string]api.IdentifyResponse `mapstructure:"Tracks"`
2021-03-30 19:59:26 +02:00
}
func (c *Config) Require() error {
// RFID.
if c.Reader.Dev == "" {
return fmt.Errorf("missing: Reader.Dev")
}
// MPD.
if c.MPD.Hostname == "" {
return fmt.Errorf("missing: MPD.Hostname")
}
if c.MPD.Port == 0 {
return fmt.Errorf("missing: MPD.Port")
}
// Meta.
if c.Meta.Stop == "" {
return fmt.Errorf("missing: Meta.Stop")
}
return nil
}