package main import ( "errors" "github.com/spf13/viper" ) type Config struct { Token string MumbleHost string MumblePort string MumblePing int } func LoadConfig() (*Config, error) { viper.SetConfigName("yammerbot") viper.AddConfigPath("/etc/yammerbot") viper.AddConfigPath(".") err := viper.ReadInConfig() if err != nil { return nil, err } viper.SetConfigType("yaml") c := &Config{} viper.SetDefault("port", "64738") viper.SetDefault("ping_time", 3) //Load configs c.Token = viper.GetString("token") c.MumbleHost = viper.GetString("host") c.MumblePort = viper.GetString("port") c.MumblePing = viper.GetInt("ping_time") if c.Token == "" || c.MumbleHost == "" { return nil, errors.New("Config has missing necesary values") } return c, nil }