config.go 772 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package config
  2. import (
  3. "io/ioutil"
  4. "gopkg.in/yaml.v2"
  5. )
  6. type Config struct {
  7. Homeserver homeserver `yaml:"homeserver"`
  8. Appservice appservice `yaml:"appservice"`
  9. Bridge bridge `yaml:"bridge"`
  10. }
  11. func FromBytes(data []byte) (*Config, error) {
  12. cfg := Config{}
  13. if err := yaml.Unmarshal(data, &cfg); err != nil {
  14. return nil, err
  15. }
  16. return &cfg, nil
  17. }
  18. func FromString(str string) (*Config, error) {
  19. return FromBytes([]byte(str))
  20. }
  21. func FromFile(filename string) (*Config, error) {
  22. data, err := ioutil.ReadFile(filename)
  23. if err != nil {
  24. return nil, err
  25. }
  26. return FromBytes(data)
  27. }
  28. func (cfg *Config) Save(filename string) error {
  29. data, err := yaml.Marshal(cfg)
  30. if err != nil {
  31. return err
  32. }
  33. return ioutil.WriteFile(filename, data, 0600)
  34. }