41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package globals
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
"strings"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
func InitConfig() error {
|
|
viper.SetDefault("db.host", "localhost")
|
|
viper.SetDefault("db.port", 5432)
|
|
viper.SetDefault("db.name", "kontor")
|
|
viper.SetDefault("db.user", "kontor")
|
|
viper.SetDefault("db.password", "kontor")
|
|
viper.SetDefault("port", 8550)
|
|
viper.SetDefault("gin.mode", "release")
|
|
|
|
viper.SetConfigName("kontor-gin")
|
|
viper.SetConfigType("yaml")
|
|
viper.AddConfigPath(".")
|
|
viper.AddConfigPath("$HOME/.config")
|
|
viper.AddConfigPath("/etc/kontor")
|
|
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
|
viper.AutomaticEnv()
|
|
|
|
// Read the config file
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
// Handle the case where config file is not found
|
|
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
|
|
slog.Info("No config file found, using defaults")
|
|
return nil
|
|
}
|
|
return fmt.Errorf("error reading config file: %w", err)
|
|
}
|
|
|
|
slog.Info("initConfig", "Using config file: ", viper.ConfigFileUsed())
|
|
return nil
|
|
}
|