package instance
import (
"bytes"
"io"
config_util "github.com/prometheus/common/config"
"gopkg.in/yaml.v2"
)
func UnmarshalConfig(r io.Reader) (*Config, error) {
var cfg Config
dec := yaml.NewDecoder(r)
dec.SetStrict(true)
err := dec.Decode(&cfg)
return &cfg, err
}
func MarshalConfig(c *Config, scrubSecrets bool) ([]byte, error) {
var buf bytes.Buffer
err := MarshalConfigToWriter(c, &buf, scrubSecrets)
return buf.Bytes(), err
}
func MarshalConfigToWriter(c *Config, w io.Writer, scrubSecrets bool) error {
enc := yaml.NewEncoder(w)
if !scrubSecrets {
enc.SetHook(func(in interface{}) (ok bool, out interface{}, err error) {
switch v := in.(type) {
case config_util.Secret:
return true, string(v), nil
case *config_util.URL:
return true, v.String(), nil
default:
return false, nil, nil
}
})
}
type plain Config
return enc.Encode((*plain)(c))
}