diff options
| author | Jeff Carr <[email protected]> | 2025-10-26 20:03:39 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-26 20:03:39 -0500 |
| commit | 59c9500872620a0e43752d7ebf352804aaf49925 (patch) | |
| tree | 8b650df674fcbe1d06892d27e54d4671b4b9d594 | |
| parent | 625fee5541cfce6afb7cadaa4f661355a063c67a (diff) | |
add something to read from /etc/<appname>.d/
| -rw-r--r-- | etc.go | 59 | ||||
| -rw-r--r-- | init.go | 18 | ||||
| -rw-r--r-- | panic.go | 2 |
3 files changed, 70 insertions, 9 deletions
@@ -0,0 +1,59 @@ +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] + SetGlobal(global, varname, value) + } +} @@ -40,15 +40,19 @@ func loadAppENV() error { return err } - envPB.Filename = filepath.Join(configDir, APPNAME, APPNAME+".ENV") - // fmt.Println("envPB.Filename", envPB.Filename) - + { + // old way. deprecate in 2026 + envPB.Filename = filepath.Join(configDir, APPNAME, APPNAME+".ENV") + data, err := os.ReadFile(envPB.Filename) + if err == nil { + parseENV(string(data)) + } + } + envPB.Filename = filepath.Join(configDir, APPNAME, APPNAME+"rc") data, err := os.ReadFile(envPB.Filename) - if err != nil { - return err + if err == nil { + parseENV(string(data)) } - - parseENV(string(data)) return err } @@ -1,8 +1,6 @@ package env func GetPanic(flag string) string { - saveMu.Lock() - defer saveMu.Unlock() if envPB == nil { envPanic(flag) } |
