spiegel/internal/config/toml.go
Ada cece0ed3bb
Some checks failed
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/lint Pipeline failed
Clone repository on start + Update repository
2024-04-04 20:53:35 +02:00

54 lines
940 B
Go

package config
import (
"os"
"github.com/pelletier/go-toml/v2"
"golang.org/x/sys/unix"
)
func LoadToml(file string) (Config, error) {
var config Config
source, err := os.ReadFile(file)
if err != nil {
return config, errConfigFileNotReadable
}
err = toml.Unmarshal(source, &config)
if err != nil {
panic(err)
}
fillFullPath(&config)
return config, nil
}
func fillFullPath(config *Config) {
for i, content := range config.RepoList {
config.RepoList[i].FullPath = config.CloneDirectory + "/" + content.Name
}
}
func (config Config) Verify() error {
allowedValue := []string{"DEBUG", "INFO", "WARN", "ERROR", "FATAL"}
found := false
for _, v := range allowedValue {
if v == config.Log.Level {
found = true
}
}
if !found {
return errLogLevel
}
if unix.Access(config.CloneDirectory, unix.W_OK) != nil {
return errCloneDirectoryUnwritable
}
// TODO: verify RepoList not redundant
return nil
}