refactor: add a means of saving the config if any default value is not set
This commit is contained in:
parent
8ab200541e
commit
73ab5b8214
|
@ -26,8 +26,6 @@ func Init() error {
|
|||
viper.SetEnvPrefix("LUME_WEB_PORTAL")
|
||||
viper.AutomaticEnv()
|
||||
|
||||
defaults()
|
||||
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
if errors.As(err, &viper.ConfigFileNotFoundError{}) {
|
||||
|
@ -36,17 +34,45 @@ func Init() error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
return writeDefaults()
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
return writeDefaults()
|
||||
}
|
||||
|
||||
func writeDefaults() error {
|
||||
defaults := map[string]interface{}{
|
||||
"core.post-upload-limit": 1024 * 1024 * 1000,
|
||||
"core.log.level": "info",
|
||||
"protocol.s5.p2p.maxOutgoingPeerFailures": 10,
|
||||
"protocol.s5.p2p.network": "",
|
||||
}
|
||||
|
||||
changes := false
|
||||
|
||||
for key, value := range defaults {
|
||||
if writeDefault(key, value) {
|
||||
changes = true
|
||||
}
|
||||
}
|
||||
|
||||
if changes {
|
||||
err := viper.WriteConfig()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func defaults() {
|
||||
viper.SetDefault("core.post-upload-limit", 1024*1024*1000)
|
||||
viper.SetDefault("core.log.level", "info")
|
||||
|
||||
viper.SetDefault("protocol.s5.p2p.maxOutgoingPeerFailures", 10)
|
||||
func writeDefault(key string, value interface{}) bool {
|
||||
if !viper.IsSet(key) {
|
||||
viper.SetDefault(key, value)
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue