subscribe-bot/config/config.go
2020-10-14 14:08:38 -05:00

53 lines
1.1 KiB
Go

package config
import (
"fmt"
"io/ioutil"
"os"
"github.com/BurntSushi/toml"
)
type Config struct {
Debug bool `toml:"debug,omitempty"`
BotToken string `toml:"bot_token"`
Repos string `toml:"repos"`
DatabasePath string `toml:"db_path"`
Oauth OauthConfig `toml:"oauth"`
Web WebConfig `toml:"web"`
}
type OauthConfig struct {
ClientId string `toml:"client_id"`
ClientSecret string `toml:"client_secret"`
}
type WebConfig struct {
Host string `toml:"host"`
Port int `toml:"port"`
ServedAt string `toml:"served_at"`
SessionSecret string `toml:"session_secret"`
}
func ReadConfig(path string) (config Config, err error) {
file, err := os.Open(path)
if err != nil {
err = fmt.Errorf("couldn't open file %s: %w", path, err)
return
}
data, err := ioutil.ReadAll(file)
if err != nil {
err = fmt.Errorf("couldn't read data from %s: %w", path, err)
return
}
err = toml.Unmarshal(data, &config)
if err != nil {
err = fmt.Errorf("couldn't parse config data from %s: %w", path, err)
return
}
return
}