diff options
Diffstat (limited to 'load.go')
| -rw-r--r-- | load.go | 92 |
1 files changed, 92 insertions, 0 deletions
@@ -0,0 +1,92 @@ +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 +} |
