Skip to content
Snippets Groups Projects
Select Git revision
  • 076807d78d7e26425229805083733cbb2f9b7693
  • main default protected
  • v1.298.0
  • v1.297.0
  • v1.296.0
  • v1.295.0
  • v1.294.0
  • v1.293.0
  • v1.292.0
  • v1.291.0
  • v1.290.0
  • v1.289.0
  • v1.288.0
  • v1.287.0
  • v1.286.0
  • v1.285.0
  • v1.284.0
  • v1.283.0
  • v1.282.0
  • v1.281.0
  • v1.280.0
  • v1.279.0
22 results

local.go

Blame
  • 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()