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: "", 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 }