diff options
| author | Jeff Carr <[email protected]> | 2025-10-22 15:54:31 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-22 15:54:31 -0500 |
| commit | e7467286e30dad228959f5f3f702a166f1ea289c (patch) | |
| tree | cbb65af7c276e11fc5eae5c0ba3a051d531075b3 | |
| parent | 072f59bbc6b49567da3dfd6fdd0a408dab860bdb (diff) | |
Init() logic was totally wrong
| -rw-r--r-- | init.go | 67 | ||||
| -rw-r--r-- | load.go | 92 | ||||
| -rw-r--r-- | save.go | 14 |
3 files changed, 65 insertions, 108 deletions
@@ -1,9 +1,15 @@ package ENV +import ( + "os" + "path/filepath" + "strings" +) + // this is an experiment at this point to // see how this turns out - -func Init(appname, version, buildtime string, fromargv []string, goodFunc func(string), badFunc func(string, error)) error { +// normally called by "argv" (go.wit.com/lib/protobuf/argvpb) +func Init(appname, version, buildtime string, fromargv []string, goodFunc func(string), badFunc func(string, error)) { APPNAME = appname VERSION = version BUILDTIME = buildtime @@ -11,13 +17,44 @@ func Init(appname, version, buildtime string, fromargv []string, goodFunc func(s goodExit = goodFunc badExit = badFunc - err := loadENV() - if err == nil { - envPB.Init = true + if envPB != nil { + // log.Info("Init() already ran") + return } + envPB = NewKeys() + envPB.Init = true + SetGlobal("lib/ENV", "APPNAME", APPNAME) SetGlobal("lib/ENV", "VERSION", VERSION) SetGlobal("lib/ENV", "BUILDTIME", BUILDTIME) +} + +// if it exists, loads ~/.config/<appname>/<appname>.ENV +func InitENV() error { + err := loadAppENV() + + // TODO: load /usr/share/doc/<appname>.ENV + // TODO: load /etc/default/<appname> + return err +} + +// if it exists, loads ~/.config/<appname>/<appname>.ENV +func loadAppENV() error { + saveMu.Lock() + saveMu.Unlock() + configDir, err := os.UserConfigDir() + if err != nil { + return err + } + + envPB.Filename = filepath.Join(configDir, APPNAME+".ENV") + + data, err := os.ReadFile(envPB.Filename) + if err != nil { + return err + } + + parseENV(string(data)) return err } @@ -29,3 +66,23 @@ func InitValid() bool { } return envPB.Init } + +func parseENV(data string) { + // log.Info("loadENV()", filename) + for _, line := range strings.Split(data, "\n") { + line = strings.TrimSpace(line) + if line == "" { + continue + } + parts := strings.Split(line, "=") + if len(parts) != 2 { + // log.Info("INVALID LINE:", i, line) + continue + } + c := new(Key) + c.Var = parts[0] + c.Value = parts[1] + envPB.Append(c) + // log.Printf("ENV LINE: (%v)\n", c) + } +} diff --git a/load.go b/load.go deleted file mode 100644 index 2986819..0000000 --- a/load.go +++ /dev/null @@ -1,92 +0,0 @@ -package ENV - -import ( - "errors" - "os" - "path/filepath" - "strings" - - "go.wit.com/log" -) - -func loadENV() error { - if envPB != nil { - log.Info("envPB already loaded") - return errors.New("envPB already loaded") - } - filename, err := getConfigFilenameENV() - if err != nil { - return err - } - // log.Info("loadENV()", filename) - stuff, err := os.ReadFile(filename) - if err != nil { - return err - } - saveMu.Lock() - defer saveMu.Unlock() - envPB = NewKeys() - for _, line := range strings.Split(string(stuff), "\n") { - line = strings.TrimSpace(line) - if line == "" { - continue - } - parts := strings.Split(line, "=") - if len(parts) != 2 { - // log.Info("INVALID LINE:", i, line) - continue - } - c := new(Key) - c.Var = parts[0] - c.Value = parts[1] - envPB.Append(c) - // log.Printf("ENV LINE: (%v)\n", c) - } - - return err -} - -func getConfigFilenameENV() (string, error) { - appname, err := GetAppname() // already configured by your application - if err != nil { - return "", err - } - - configdir, err := getConfigDir() - if err != nil { - return "", err - } - - filename := filepath.Join(configdir, appname+".ENV") - return filename, nil -} - -func getCacheDir() (string, error) { - if Get("cacheDir") != "" { - return Get("cacheDir"), nil - } - - cacheDir, _ := os.UserCacheDir() - - appname, err := GetAppname() // application should have already configured this - if err != nil { - return cacheDir, err - } - - return filepath.Join(cacheDir, appname), nil -} - -func getConfigDir() (string, error) { - if Get("configDir") != "" { - return Get("configDir"), nil - } - - configDir, _ := os.UserConfigDir() - - appname, err := GetAppname() // application should have already configured this - if err != nil { - return configDir, err - } - - return filepath.Join(configDir, appname), nil -} @@ -11,13 +11,9 @@ func Save() error { } func saveENV() error { - filename, err := getConfigFilenameENV() - if err != nil { - return err - } saveMu.Lock() defer saveMu.Unlock() - return saveENVnolock(filename) + return saveENVnolock(envPB.Filename) } func saveENVnolock(filename string) error { @@ -62,10 +58,6 @@ func True(flag string) bool { } func Set(varname string, newValue string) error { - filename, err := getConfigFilenameENV() - if err != nil { - return err - } saveMu.Lock() defer saveMu.Unlock() if envPB == nil { @@ -74,13 +66,13 @@ func Set(varname string, newValue string) error { found := envPB.FindByVar(varname) if found != nil { found.Value = newValue - saveENVnolock(filename) + saveENVnolock(envPB.Filename) } newvar := new(Key) newvar.Var = varname newvar.Value = newValue envPB.Append(newvar) - saveENVnolock(filename) + saveENVnolock(envPB.Filename) return nil } |
