6
"github.com/kelseyhightower/envconfig"
7
"github.com/pkg/errors"
10
"github.com/kumahq/kuma/pkg/core"
13
func Load(file string, cfg Config) error {
14
return LoadWithOption(file, cfg, false, true, true)
17
func LoadWithOption(file string, cfg Config, strict bool, includeEnv bool, validate bool) error {
19
core.Log.WithName("config").Info("skipping reading config from file")
20
} else if err := loadFromFile(file, cfg, strict); err != nil {
25
if err := envconfig.Process("", cfg); err != nil {
30
if err := cfg.PostProcess(); err != nil {
31
return errors.Wrap(err, "configuration post processing failed")
35
if err := cfg.Validate(); err != nil {
36
return errors.Wrapf(err, "Invalid configuration")
42
func loadFromFile(file string, cfg Config, strict bool) error {
43
if _, err := os.Stat(file); err != nil {
44
return errors.Errorf("Failed to access configuration file %q", file)
46
contents, err := os.ReadFile(file)
48
return errors.Wrapf(err, "Failed to read configuration from file %q", file)
51
err = yaml.UnmarshalStrict(contents, cfg)
53
err = yaml.Unmarshal(contents, cfg)
55
return errors.Wrapf(err, "Failed to parse configuration from file %q", file)