package env import ( "fmt" "os" "path/filepath" "strings" ) var ErrInit error = fmt.Errorf("lib/env has not been initialized") func LoadEtc() error { fmt.Printf("Starting LoadEtc() with appname: %s\n", APPNAME) if envPB == nil { return ErrInit } if APPNAME == "" { return ErrInit } globPattern := filepath.Join("/etc/", APPNAME+".d", "*") fmt.Printf("glob Pattern (%s)\n", globPattern) files, err := filepath.Glob(globPattern) if err != nil { fmt.Printf("%s glob error (%v)\n", globPattern, err) return err } fmt.Printf("found files: %v\n", files) for _, file := range files { data, _ := os.ReadFile(file) _, name := filepath.Split(file) parseFileData("etc/"+name, string(data)) fmt.Println("LoadEtc() file:", file) } return nil } func parseFileData(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) } }