iris/_examples/configuration/viper/config/config.go
2020-09-16 12:59:51 +03:00

55 lines
1.3 KiB
Go

package config
import (
"fmt"
"github.com/kataras/iris/v12"
// Viper is a third-party package:
// go get github.com/spf13/viper
"github.com/spf13/viper"
)
func init() {
loadConfiguration()
}
// C is the configuration of the app.
var C = struct {
Iris iris.Configuration
Addr struct {
Internal struct {
IP string
Plain int
Secure int
}
}
Locale struct {
Pattern string
Default string
Supported []string
}
}{
Iris: iris.DefaultConfiguration(),
// other default values...
}
func loadConfiguration() {
viper.SetConfigName("config") // name of config file (without extension)
viper.SetConfigType("yaml") // REQUIRED if the config file does not have the extension in the name
viper.AddConfigPath("/etc/app/") // path to look for the config file in
viper.AddConfigPath("$HOME/.app") // call multiple times to add many search paths
viper.AddConfigPath(".") // optionally look for config in the working directory
err := viper.ReadInConfig() // Find and read the config file
if err := viper.ReadInConfig(); err != nil {
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
} else {
panic(fmt.Errorf("load configuration: %w", err))
}
}
err = viper.Unmarshal(&C)
if err != nil {
panic(fmt.Errorf("load configuration: unmarshal: %w", err))
}
}