Read TOML configuration files

This commit is contained in:
daru
2021-10-17 13:24:27 +02:00
parent 7c989eaaf4
commit dbd4b579e5
7 changed files with 87 additions and 12 deletions

44
config/toml.go Normal file
View File

@@ -0,0 +1,44 @@
package config
import (
"io/ioutil"
"os"
"github.com/gookit/color"
"github.com/pelletier/go-toml/v2"
)
func loadConfFile(configFilePath string) Configuration {
bytes, err := ioutil.ReadFile(configFilePath)
if err != nil {
color.Errorln(err.Error())
color.Warnln("Creating new configuration file")
return createNewConfig(configFilePath)
}
var cfg Configuration
err = toml.Unmarshal(bytes, &cfg)
if err != nil {
color.Errorln(err.Error())
color.Errorln("Configuration file " + configFilePath + " could not be read as TOML file")
panic(err)
}
color.Infoln("Loaded configuration file " + configFilePath)
return cfg
}
func createNewConfig(configFilePath string) Configuration {
confBytes, err := toml.Marshal(defaultConfig)
if err != nil {
color.Errorln(err.Error())
color.Errorln("Default config struct is not TOML conform")
panic(err)
}
err = os.WriteFile(configFilePath, confBytes, 0644)
if err != nil {
color.Errorln(err.Error())
color.Warnln("Using default config without file")
}
return defaultConfig
}