Select Git revision
local.go 1.02 KiB
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()