This commit is contained in:
@@ -8,6 +8,53 @@ import (
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
var (
|
||||
CfgFile string
|
||||
Verbose int
|
||||
Overwrite bool
|
||||
Config CliConfig
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
Url string `mapstructure:"url"`
|
||||
Username string `mapstructure:"username"`
|
||||
Password string `mapstructure:"password"`
|
||||
}
|
||||
|
||||
type CliConfig struct {
|
||||
Server map[string]Server `mapstructure:"server"`
|
||||
}
|
||||
|
||||
func InitCliConfig() {
|
||||
slog.Info("InitCliConfig")
|
||||
if CfgFile != "" {
|
||||
viper.SetConfigFile(CfgFile)
|
||||
} else {
|
||||
viper.SetConfigName("kli") // without extension
|
||||
viper.SetConfigType("yaml")
|
||||
viper.AddConfigPath(".") // look for config in working directory
|
||||
viper.AddConfigPath("/home/tpeetz/.config")
|
||||
}
|
||||
|
||||
// Read the configuration 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")
|
||||
if err := viper.SafeWriteConfig(); err != nil {
|
||||
slog.Info("error writing config file", "error", err.Error())
|
||||
}
|
||||
} else {
|
||||
slog.Info("error reading config file", "error", err.Error())
|
||||
}
|
||||
} else {
|
||||
slog.Info("initConfig", "Using config file: ", viper.ConfigFileUsed())
|
||||
if err := viper.Unmarshal(&Config); err != nil {
|
||||
slog.Info("parsing of config file failed", "error", err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func InitConfig() error {
|
||||
viper.SetDefault("db.host", "localhost")
|
||||
viper.SetDefault("db.port", 5432)
|
||||
@@ -20,7 +67,7 @@ func InitConfig() error {
|
||||
viper.SetConfigName("kontor-gin")
|
||||
viper.SetConfigType("yaml")
|
||||
viper.AddConfigPath(".")
|
||||
viper.AddConfigPath("$HOME/.config")
|
||||
viper.AddConfigPath("/home/tpeetz/.config")
|
||||
viper.AddConfigPath("/etc/kontor")
|
||||
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
||||
viper.AutomaticEnv()
|
||||
@@ -30,11 +77,16 @@ func InitConfig() error {
|
||||
// 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
|
||||
if err := viper.SafeWriteConfig(); err != nil {
|
||||
slog.Info("error writing config file", "error", err.Error())
|
||||
return fmt.Errorf("error writing config file: %w", err)
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("error reading config file: %w", err)
|
||||
}
|
||||
return fmt.Errorf("error reading config file: %w", err)
|
||||
} else {
|
||||
slog.Info("initConfig", "Using config file: ", viper.ConfigFileUsed())
|
||||
}
|
||||
|
||||
slog.Info("initConfig", "Using config file: ", viper.ConfigFileUsed())
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user