package env import ( "fmt" "os" "path/filepath" "strings" "go.wit.com/log" ) var ErrInit error = fmt.Errorf("lib/env has not been initialized") func LoadEtc() error { log.Info("Starting LoadEtc() with appname:", APPNAME) if envPB == nil { return ErrInit } if APPNAME == "" { return ErrInit } globPattern := filepath.Join("/etc/", APPNAME+".d", "*") log.Info("glob Pattern:", globPattern) files, err := filepath.Glob(globPattern) if err != nil { fmt.Printf("%s glob error (%v)\n", globPattern, err) return err } log.Info("found files:", files) for _, file := range files { data, _ := os.ReadFile(file) _, name := filepath.Split(file) addEtcFile("etc/"+name, string(data)) log.Info("LoadEtc() file:", file) } return nil } func addEtcFile(global string, data string) { for _, line := range strings.Split(data, "\n") { // chop spaces and quotes. similar rules to bash ENV line = strings.TrimSpace(line) line = strings.Trim(line, "'\"") if line == "" { continue } parts := strings.Split(line, "=") if len(parts) != 2 { // fmt.Println("INVALID LINE:", i, line) continue } varname := parts[0] value := parts[1] value = strings.Trim(value, "'\"") SetGlobal(global, varname, value) } }