// Read analyzes a given key/value map to extract the configuration values valid // for each plugin. All non-default values are written to the Settings member. func (conf *PluginConfig) Read(values shared.MarshalMap) { var err error for key, settingValue := range values { switch key { case "ID": conf.ID, err = values.String("ID") case "Enable": conf.Enable, err = values.Bool("Enable") case "Instances": conf.Instances, err = values.Int("Instances") case "Stream": conf.Stream, err = values.StringArray("Stream") default: conf.Settings[key] = settingValue } if err != nil { Log.Error.Fatalf(err.Error()) } } // Sanity checks if conf.Instances == 0 { conf.Enable = false } if len(conf.Stream) == 0 { conf.Stream = append(conf.Stream, "*") } }