소스 검색

Make sure we always load our default config values

Gary Kramlich 3 년 전
부모
커밋
5a11f49dbe
4개의 변경된 파일96개의 추가작업 그리고 6개의 파일을 삭제
  1. 25 0
      config/appservice.go
  2. 26 0
      config/bot.go
  3. 20 6
      config/bridge.go
  4. 25 0
      config/config.go

+ 25 - 0
config/appservice.go

@@ -12,3 +12,28 @@ type appservice struct {
 	ASToken string `yaml:"as_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()
+}

+ 26 - 0
config/bot.go

@@ -5,3 +5,29 @@ type bot struct {
 	Displayname string `yaml:"displayname"`
 	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()
+}

+ 20 - 6
config/bridge.go

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

+ 25 - 0
config/config.go

@@ -12,6 +12,29 @@ type Config struct {
 	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) {
 	cfg := Config{}
 
@@ -19,6 +42,8 @@ func FromBytes(data []byte) (*Config, error) {
 		return nil, err
 	}
 
+	cfg.setDefaults()
+
 	return &cfg, nil
 }