Select Git revision

Volker Schukai authored
api.go 953 B
// Copyright 2022 schukai GmbH
// SPDX-License-Identifier: AGPL-3.0-or-later
package configuration
import "github.com/imdario/mergo"
// NewSetting creates a new configuration setting
// with the given defaults.
func New[C any](defaults C) *Settings[C] {
s := &Settings[C]{}
s.initDefaults()
if err := mergo.Merge(&defaults, s.config); err != nil {
s.errors = append(s.errors, err)
}
s.config = defaults
err := validateConfig[C](defaults)
if err != nil {
s.errors = append(s.errors, err)
var r C
s.config = r
}
initFileBackend(&s.files)
return s
}
// Set the mnemonic
// The mnemonic is used to identify the configuration in the configuration file
func (s *Settings[C]) SetMnemonic(mnemonic string) *Settings[C] {
if mnemonic == "" {
s.errors = append(s.errors, MnemonicEmptyError)
} else {
s.mnemonic = mnemonic
}
return s
}
// Config() returns the configuration
func (s *Settings[C]) Config() C {
return s.config
}