2020-10-16 19:12:53 +02:00
|
|
|
package config
|
2020-10-08 18:21:27 +02:00
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
2020-10-09 10:27:20 +02:00
|
|
|
|
|
|
|
"github.com/spf13/viper"
|
2020-10-08 18:21:27 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// Configuration is the app configuration stored in a json file
|
|
|
|
type Configuration struct {
|
2020-10-14 07:14:08 +02:00
|
|
|
ServerRoot string `json:"serverRoot" mapstructure:"serverRoot"`
|
|
|
|
Port int `json:"port" mapstructure:"port"`
|
|
|
|
DBType string `json:"dbtype" mapstructure:"dbtype"`
|
|
|
|
DBConfigString string `json:"dbconfig" mapstructure:"dbconfig"`
|
|
|
|
UseSSL bool `json:"useSSL" mapstructure:"useSSL"`
|
|
|
|
WebPath string `json:"webpath" mapstructure:"webpath"`
|
|
|
|
FilesPath string `json:"filespath" mapstructure:"filespath"`
|
2020-10-08 18:21:27 +02:00
|
|
|
}
|
|
|
|
|
2020-10-16 19:12:53 +02:00
|
|
|
func ReadConfigFile() (*Configuration, error) {
|
2020-10-09 10:27:20 +02:00
|
|
|
viper.SetConfigName("config") // name of config file (without extension)
|
|
|
|
viper.SetConfigType("json") // REQUIRED if the config file does not have the extension in the name
|
|
|
|
viper.AddConfigPath(".") // optionally look for config in the working directory
|
2020-10-15 02:35:15 +02:00
|
|
|
viper.SetDefault("ServerRoot", "http://localhost:8000")
|
2020-10-09 10:27:20 +02:00
|
|
|
viper.SetDefault("Port", 8000)
|
|
|
|
viper.SetDefault("DBType", "sqlite3")
|
|
|
|
viper.SetDefault("DBConfigString", "./octo.db")
|
|
|
|
viper.SetDefault("WebPath", "./pack")
|
|
|
|
viper.SetDefault("FilesPath", "./files")
|
2020-10-08 18:21:27 +02:00
|
|
|
|
2020-10-09 10:27:20 +02:00
|
|
|
err := viper.ReadInConfig() // Find and read the config file
|
|
|
|
if err != nil { // Handle errors reading the config file
|
|
|
|
return nil, err
|
2020-10-08 18:21:27 +02:00
|
|
|
}
|
|
|
|
|
2020-10-09 10:27:20 +02:00
|
|
|
configuration := Configuration{}
|
2020-10-09 10:28:39 +02:00
|
|
|
err = viper.Unmarshal(&configuration)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2020-10-08 18:21:27 +02:00
|
|
|
|
|
|
|
log.Println("readConfigFile")
|
|
|
|
log.Printf("%+v", configuration)
|
|
|
|
|
2020-10-09 10:27:20 +02:00
|
|
|
return &configuration, nil
|
2020-10-08 18:21:27 +02:00
|
|
|
}
|