hubbub/config/config.go
2025-10-31 05:10:40 +01:00

54 lines
1022 B
Go

package config
import (
"errors"
"os"
"github.com/spf13/viper"
)
type Config struct {
Server string
Port uint16
Username string
Privkey string
Nick string
Channel string
}
func LoadConfigFile(path string) (Config, error) {
viper.SetDefault("Server", "tilde.town")
viper.SetDefault("Port", 22)
viper.SetConfigName("config")
viper.SetConfigType("toml")
viper.AddConfigPath(".")
viper.AddConfigPath(os.ExpandEnv("$HOME/.config/hubbub"))
if path != "" {
viper.SetConfigFile(path)
}
var config Config
if err := viper.ReadInConfig(); err != nil {
return config, err
}
if err := viper.Unmarshal(&config); err != nil {
return config, err
}
if config.Username == "" {
return config, errors.New("username is required")
}
if config.Privkey == "" {
return config, errors.New("privkey is required")
}
if config.Nick == "" {
return config, errors.New("nick is required")
}
if config.Channel == "" {
return config, errors.New("channel is required")
}
return config, nil
}