package main import ( "github.com/inhies/go-bytesize" "gopkg.in/yaml.v3" "os" ) type Config struct { Listen string `yaml:"listen"` PromAddr string `yaml:"prometheus_address"` Targets []ServerSpec `yaml:"targets"` } type ServerSpec struct { Id string `yaml:"id"` Url string `yaml:"url"` MinimumFreeSpace bytesize.ByteSize `yaml:"free_space_min"` JobName string `yaml:"prom_job_name"` } func NewConfigFromFile(fn string) (Config, error) { var c Config yamlFile, err := os.ReadFile(fn) if err != nil { return c, err } err = yaml.Unmarshal(yamlFile, &c) if err != nil { return c, err } log.Infof("Loaded config: %v", c) return c, nil }