package config import ( "encoding/json" "fmt" "os" "path" "gitlab.com/uafrica/go-utils/errors" "gitlab.com/uafrica/go-utils/logger" ) func LoadLocal() error { configDir, err := os.Getwd() if err != nil { return errors.Wrapf(err, "cannot get working directory") } configFilename := "config.local.json" for { fn := configDir + "/" + configFilename f, err := os.Open(fn) if err != nil { logger.Debugf("%s not found in %s", configFilename, configDir) parentDir := path.Dir(configDir) if parentDir == configDir { return errors.Errorf("did not find file %s in working dir or any parent dir", configFilename) } configDir = parentDir continue } defer f.Close() var config map[string]interface{} if err := json.NewDecoder(f).Decode(&config); err != nil { return errors.Wrapf(err, "failed to decode JSON from file %s", fn) } for n, v := range config { vs := fmt.Sprintf("%v", v) os.Setenv(n, vs) logger.Debugf("Defined local config %s=%s", n, vs) } return nil } } //LoadLocal()