pushbits/configuration/configuration.go
2020-07-27 00:54:18 +02:00

43 lines
970 B
Go

package configuration
import (
"github.com/jinzhu/configor"
)
// Configuration holds values that can be configured by the user.
type Configuration struct {
Database struct {
Dialect string `default:"sqlite3"`
Connection string `default:"pushbits.db"`
}
Admin struct {
Name string `default:"admin"`
Password string `default:"admin"`
MatrixID string `required:"true"`
}
Matrix struct {
Homeserver string `default:"https://matrix.org"`
Username string `required:"true"`
Password string `required:"true"`
}
}
func configFiles() []string {
return []string{"config.yml"}
}
// Get returns the configuration extracted from env variables or config file.
func Get() *Configuration {
config := &Configuration{}
err := configor.New(&configor.Config{
Environment: "production",
ENVPrefix: "PUSHBITS",
ErrorOnUnmatchedKeys: true,
}).Load(config, configFiles()...)
if err != nil {
panic(err)
}
return config
}