Make sure we always load our default config values

This commit is contained in:
Gary Kramlich
2021-11-19 16:31:19 -06:00
parent 09911a11e3
commit 5a11f49dbe
4 changed files with 96 additions and 6 deletions

View File

@@ -12,3 +12,28 @@ type appservice struct {
ASToken string `yaml:"as_token"` ASToken string `yaml:"as_token"`
HSToken string `yaml:"hs_token"` HSToken string `yaml:"hs_token"`
} }
func (a *appservice) setDefaults() error {
if a.ID == "" {
a.ID = "discord"
}
if err := a.Bot.setDefaults(); err != nil {
return err
}
return nil
}
func (a *appservice) UnmarshalYAML(unmarshal func(interface{}) error) error {
type rawAppservice appservice
raw := rawAppservice{}
if err := unmarshal(&raw); err != nil {
return err
}
*a = appservice(raw)
return a.setDefaults()
}

View File

@@ -5,3 +5,29 @@ type bot struct {
Displayname string `yaml:"displayname"` Displayname string `yaml:"displayname"`
Avatar string `yaml:"avatar"` Avatar string `yaml:"avatar"`
} }
func (b *bot) setDefaults() error {
if b.Username == "" {
b.Username = "discordbot"
}
if b.Displayname == "" {
b.Displayname = "Discord Bridge Bot"
}
return nil
}
func (b *bot) UnmarshalYAML(unmarshal func(interface{}) error) error {
type rawBot bot
raw := rawBot{}
if err := unmarshal(&raw); err != nil {
return err
}
*b = bot(raw)
return b.setDefaults()
}

View File

@@ -1,6 +1,8 @@
package config package config
import ( import (
"fmt"
"bytes" "bytes"
"text/template" "text/template"
) )
@@ -11,6 +13,21 @@ type bridge struct {
usernameTemplate *template.Template `yaml:"-"` usernameTemplate *template.Template `yaml:"-"`
} }
func (b *bridge) setDefaults() error {
var err error
if b.UsernameTemplate == "" {
b.UsernameTemplate = "Discord_{{.}}"
}
b.usernameTemplate, err = template.New("username").Parse(b.UsernameTemplate)
if err != nil {
return err
}
return nil
}
func (b *bridge) UnmarshalYAML(unmarshal func(interface{}) error) error { func (b *bridge) UnmarshalYAML(unmarshal func(interface{}) error) error {
type rawBridge bridge type rawBridge bridge
@@ -21,19 +38,16 @@ func (b *bridge) UnmarshalYAML(unmarshal func(interface{}) error) error {
return err return err
} }
raw.usernameTemplate, err = template.New("username").Parse(raw.UsernameTemplate)
if err != nil {
return err
}
*b = bridge(raw) *b = bridge(raw)
return nil return b.setDefaults()
} }
func (b bridge) FormatUsername(userid string) string { func (b bridge) FormatUsername(userid string) string {
var buffer bytes.Buffer var buffer bytes.Buffer
fmt.Printf("bridge: %#v\n", b)
b.usernameTemplate.Execute(&buffer, userid) b.usernameTemplate.Execute(&buffer, userid)
return buffer.String() return buffer.String()

View File

@@ -12,6 +12,29 @@ type Config struct {
Bridge bridge `yaml:"bridge"` Bridge bridge `yaml:"bridge"`
} }
func (cfg *Config) setDefaults() error {
if err := cfg.Appservice.setDefaults(); err != nil {
return err
}
if err := cfg.Bridge.setDefaults(); err != nil {
return err
}
return nil
}
func (cfg *Config) UnmarshalYAML(unmarshal func(interface{}) error) error {
type rawConfig Config
raw := rawConfig{}
if err := unmarshal(&raw); err != nil {
return err
}
return cfg.setDefaults()
}
func FromBytes(data []byte) (*Config, error) { func FromBytes(data []byte) (*Config, error) {
cfg := Config{} cfg := Config{}
@@ -19,6 +42,8 @@ func FromBytes(data []byte) (*Config, error) {
return nil, err return nil, err
} }
cfg.setDefaults()
return &cfg, nil return &cfg, nil
} }