kuma
1package config
2
3import (
4"encoding/json"
5"os"
6"reflect"
7
8"sigs.k8s.io/yaml"
9)
10
11func ConfigForDisplay(cfg Config) (Config, error) {
12// copy config so we don't override values, because nested structs in config are pointers
13newCfg, err := copyConfig(cfg)
14if err != nil {
15return nil, err
16}
17newCfg.Sanitize()
18return newCfg, nil
19}
20
21func copyConfig(cfg Config) (Config, error) {
22cfgBytes, err := json.Marshal(cfg)
23if err != nil {
24return nil, err
25}
26
27newCfg := reflect.New(reflect.TypeOf(cfg).Elem()).Interface().(Config)
28if err := json.Unmarshal(cfgBytes, newCfg); err != nil {
29return nil, err
30}
31return newCfg, nil
32}
33
34func DumpToFile(filename string, cfg Config) error {
35if err := cfg.Validate(); err != nil {
36return err
37}
38
39b, err := yaml.Marshal(cfg)
40if err != nil {
41return err
42}
43
44return os.WriteFile(filename, b, 0o600)
45}
46