lightshowpi/config/config.go

42 lines
895 B
Go

package config
import (
"fmt"
"github.com/pelletier/go-toml"
"github.com/tblyler/lightshowpi/light/rpi"
"github.com/tblyler/lightshowpi/sound"
)
// Config contains all the potentially needed config data
type Config struct {
ListenAddress string
SongPath string
FMOutput sound.FMConfig
LightSchedulePath string
RaspberryPi struct {
ChipName string
BasicLights map[string]struct {
Pin int
}
}
}
// ParseConfig from raw binary data
func ParseConfig(rawConfig []byte) (*Config, error) {
config := &Config{}
err := toml.Unmarshal(rawConfig, config)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal TOML config: %w", err)
}
return config, nil
}
// RPIManagerConfig instance derrived from this config
func (c *Config) RPIManagerConfig() *rpi.ManagerConfig {
return &rpi.ManagerConfig{
ChipName: c.RaspberryPi.ChipName,
}
}