Add a default configuration

This commit is contained in:
2021-03-15 22:26:19 -05:00
parent 32bce4eaba
commit dfa5d41a6d
2 changed files with 40 additions and 22 deletions

View File

@ -5,6 +5,7 @@ import (
"fmt"
"os"
"path"
"strings"
"github.com/BurntSushi/toml"
)
@ -15,8 +16,15 @@ type Config struct {
AccessToken string `toml:"access_token"`
OutputFormat string `toml:"output_format"`
Colors map[string][]float32 `toml:"colors"`
userAgent string
}
var (
DefaultConfig = Config{
userAgent: initUserAgent(),
}
)
// Validate configuration struct
func (c *Config) Validate() error {
var err error
@ -52,25 +60,40 @@ func (c *Config) validateColors() (err error) {
return err
}
func LoadConfig(s string) (Config, error) {
func LoadConfig(s string) (*Config, error) {
var err error
var c Config
var c *Config = &Config{}
*c = DefaultConfig
if _, err := toml.Decode(s, &c); err != nil {
err = fmt.Errorf("fatal: failed to parse; %w", err)
}
envAccessToken := os.Getenv("LIFX_ACCESS_TOKEN")
if envAccessToken != "" {
c.AccessToken = envAccessToken
}
return c, err
}
func LoadConfigFile(configPath string) (Config, error) {
func LoadConfigFile(configPath string) (*Config, error) {
var err error
var c Config
var c *Config = &Config{}
*c = DefaultConfig
if _, err := toml.DecodeFile(configPath, &c); err != nil {
err = fmt.Errorf("fatal: failed to parse %s; %w", configPath, err)
}
envAccessToken := os.Getenv("LIFX_ACCESS_TOKEN")
if envAccessToken != "" {
c.AccessToken = envAccessToken
}
return c, err
}
@ -97,3 +120,12 @@ func getConfigPath() string {
return configPath
}
func initUserAgent() string {
var b strings.Builder
b.WriteString("lume")
b.WriteRune('/')
b.WriteString(Version)
return b.String()
}