+
+func readConfig(dst interface{}, path string) error {
+ if buf, err := ioutil.ReadFile(path); err != nil && os.IsNotExist(err) {
+ if path == defaultConfigPath {
+ log.Printf("Config not specified. Continue with default configuration.")
+ } else {
+ return fmt.Errorf("Config file not found %q: %v", path, err)
+ }
+ } else if err != nil {
+ return fmt.Errorf("Error reading config %q: %v", path, err)
+ } else if err = json.Unmarshal(buf, dst); err != nil {
+ return fmt.Errorf("Error decoding config %q: %v", path, err)
+ }
+ return nil
+}