package main import ( "encoding/json" "fmt" "os" ) type Configuration struct { ListenAddress string `json:"listen-address"` Processes []Process `json:"processes"` } func LoadConfiguration(path string) (conf *Configuration, err error) { f, err := os.Open(path) if err != nil { return nil, err } defer f.Close() conf = &Configuration{} if err := json.NewDecoder(f).Decode(conf); err != nil { return nil, err } for i := 0; i < len(conf.Processes); i++ { if conf.Processes[i].Process == "" { return nil, fmt.Errorf("an empty process field found") } if conf.Processes[i].Alias == "" { conf.Processes[i].Alias = conf.Processes[i].Process } } return conf, nil }