bin/config/config.go

66 lines
1.5 KiB
Go
Raw Normal View History

2023-09-12 22:30:58 +02:00
package config
2023-09-11 23:26:50 +02:00
import (
"github.com/sirupsen/logrus"
2023-09-13 20:03:34 +02:00
"github.com/spf13/pflag"
2023-09-11 23:26:50 +02:00
"github.com/spf13/viper"
)
2023-09-12 22:30:58 +02:00
type smtp struct {
Enabled bool
Host string
Port uint16
Username string
Password string
From string
}
var SMTP smtp = smtp{}
var BaseURL string = "localhost"
2023-09-13 20:03:34 +02:00
var Debug bool = false
2023-09-12 22:30:58 +02:00
func InitConfig() error {
2023-09-11 23:26:50 +02:00
viper.SetDefault("host", "[::]")
viper.SetDefault("port", 8080)
viper.SetDefault("db_path", "bin.db")
viper.SetDefault("smtp.enabled", false)
viper.SetDefault("user.registration_enabled", false)
2023-09-12 22:30:58 +02:00
viper.SetDefault("base_url", "localhost")
2023-09-13 20:03:34 +02:00
viper.SetDefault("debug", false)
2023-09-11 23:26:50 +02:00
viper.SetConfigName("config")
viper.SetConfigType("toml")
viper.AddConfigPath("/etc/bin")
viper.AddConfigPath("$HOME/.config/bin")
viper.AddConfigPath("$XDG_CONFIG_HOME/bin")
viper.AddConfigPath(".")
if err := viper.ReadInConfig(); err != nil {
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
logrus.Warnln("No config file found.")
} else {
logrus.WithError(err).Errorln("Config file found but could not read it.")
}
}
2023-09-13 20:03:34 +02:00
pflag.BoolP("debug", "D", false, "toggle debug mode")
pflag.Parse()
viper.BindPFlags(pflag.CommandLine)
Debug = viper.GetBool("debug")
2023-09-12 22:30:58 +02:00
SMTP = smtp{
Enabled: viper.GetBool("smtp.enabled"),
Host: viper.GetString("smtp.host"),
Port: viper.GetUint16("smtp.port"),
Username: viper.GetString("smtp.username"),
Password: viper.GetString("smtp.password"),
From: viper.GetString("smtp.from"),
}
BaseURL = viper.GetString("base_url")
2023-09-11 23:26:50 +02:00
return nil
}