All checks were successful
gitea-deepak/gogmagog/pipeline/head This commit looks good
69 lines
1.1 KiB
Go
69 lines
1.1 KiB
Go
package config
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
// AppConfig represents the config flags for the base application.
|
|
type AppConfig struct {
|
|
Environment string
|
|
Port string
|
|
}
|
|
|
|
// DBConfig is the config for the DB connection.
|
|
type DBConfig struct {
|
|
Type string
|
|
Host string
|
|
Port string
|
|
User string
|
|
Password string
|
|
Database string
|
|
}
|
|
|
|
// Conf represents the overall configuration of the application.
|
|
type Conf struct {
|
|
App AppConfig
|
|
Db DBConfig
|
|
}
|
|
|
|
func createDefaultConf() *Conf {
|
|
cnf := &Conf{
|
|
App: AppConfig{
|
|
Environment: "local",
|
|
Port: "8080",
|
|
},
|
|
Db: DBConfig{
|
|
Type: "postgres",
|
|
Host: "localhost",
|
|
Port: "5432",
|
|
User: "<user>",
|
|
Password: "<password>",
|
|
Database: "gogmagog",
|
|
},
|
|
}
|
|
|
|
return cnf
|
|
}
|
|
|
|
// GetConf returns config values
|
|
func GetConf(filename string) (*Conf, error) {
|
|
|
|
cnf := createDefaultConf()
|
|
|
|
vv := viper.New()
|
|
vv.SetConfigName(filename)
|
|
vv.SetConfigType("yaml")
|
|
vv.AddConfigPath(".")
|
|
|
|
err := vv.ReadInConfig()
|
|
if err != nil {
|
|
log.Print("Could not load config file: \n", err)
|
|
return nil, err
|
|
}
|
|
|
|
vv.Unmarshal(&cnf)
|
|
return cnf, nil
|
|
}
|