2022-03-11 20:06:33 +00:00
|
|
|
package configuration
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
2022-08-02 05:26:41 +00:00
|
|
|
"sync"
|
2022-03-11 20:06:33 +00:00
|
|
|
|
|
|
|
"github.com/getsentry/sentry-go"
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
)
|
|
|
|
|
2022-08-02 05:26:41 +00:00
|
|
|
var (
|
|
|
|
globalConfig Configuration
|
|
|
|
globalLock *sync.Mutex
|
|
|
|
)
|
2022-03-11 20:06:33 +00:00
|
|
|
|
2022-08-02 05:26:41 +00:00
|
|
|
func init() {
|
|
|
|
globalLock = &sync.Mutex{}
|
|
|
|
}
|
2022-03-11 20:06:33 +00:00
|
|
|
|
2022-08-02 05:26:41 +00:00
|
|
|
func Global() (c Configuration) {
|
|
|
|
globalLock.Lock()
|
|
|
|
c = globalConfig
|
|
|
|
globalLock.Unlock()
|
|
|
|
return
|
2022-03-11 20:06:33 +00:00
|
|
|
}
|
|
|
|
|
2022-08-02 18:59:27 +00:00
|
|
|
func Initialize() {
|
2022-08-02 05:26:41 +00:00
|
|
|
setDefaults()
|
2022-03-11 20:06:33 +00:00
|
|
|
|
|
|
|
viper.AddConfigPath("/etc")
|
|
|
|
viper.AddConfigPath("/usr/local/etc")
|
|
|
|
viper.AddConfigPath(".")
|
|
|
|
viper.SetConfigName("fermentord")
|
|
|
|
viper.SetConfigType("toml")
|
2022-08-02 18:59:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func LoadConfiguration() Configuration {
|
|
|
|
globalLock.Lock()
|
|
|
|
defer globalLock.Unlock()
|
2022-03-11 20:06:33 +00:00
|
|
|
|
|
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
|
|
log.Printf("Error loading configuration: %v", err)
|
|
|
|
}
|
|
|
|
|
2022-03-15 16:20:47 +00:00
|
|
|
config := &Configuration{}
|
2022-03-11 20:06:33 +00:00
|
|
|
if err := viper.Unmarshal(config); err != nil {
|
2022-07-25 08:55:25 +00:00
|
|
|
sentry.CaptureException(err)
|
2022-03-11 20:06:33 +00:00
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
|
2022-08-02 05:26:41 +00:00
|
|
|
globalConfig = *config
|
2022-08-02 18:59:27 +00:00
|
|
|
|
|
|
|
return globalConfig
|
2022-03-11 20:06:33 +00:00
|
|
|
}
|