49 lines
976 B
Go
49 lines
976 B
Go
package preflight
|
|
|
|
import (
|
|
"runtime"
|
|
|
|
"github.com/rs/zerolog/log"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
func Config(name string) {
|
|
config := viper.GetString("config")
|
|
|
|
if config != "" {
|
|
viper.SetConfigFile(config) // Use config file from the flag.
|
|
} else {
|
|
if runtime.GOOS == "linux" {
|
|
viper.AddConfigPath("/etc/neko/")
|
|
}
|
|
|
|
viper.AddConfigPath(".")
|
|
viper.SetConfigName(name)
|
|
}
|
|
|
|
viper.SetEnvPrefix("NEKO")
|
|
viper.AutomaticEnv() // read in environment variables that match
|
|
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
if _, ok := err.(viper.ConfigFileNotFoundError); !ok {
|
|
log.Error().Err(err)
|
|
}
|
|
if config != "" {
|
|
log.Error().Err(err)
|
|
}
|
|
}
|
|
|
|
file := viper.ConfigFileUsed()
|
|
logger := log.With().
|
|
Bool("debug", viper.GetBool("debug")).
|
|
Str("logging", viper.GetString("logs")).
|
|
Str("config", file).
|
|
Logger()
|
|
|
|
if file == "" {
|
|
logger.Warn().Msg("Preflight complete without config file")
|
|
} else {
|
|
logger.Info().Msg("Preflight complete")
|
|
}
|
|
}
|