diff --git a/main.go b/main.go index 02bb42e3..dc946c7b 100644 --- a/main.go +++ b/main.go @@ -10,29 +10,27 @@ import ( alpm "github.com/jguer/go-alpm" ) -func initPaths() { - if configHome = os.Getenv("XDG_CONFIG_HOME"); configHome != "" { - if info, err := os.Stat(configHome); err == nil && info.IsDir() { - configHome = filepath.Join(configHome, "yay") - } else { - configHome = filepath.Join(os.Getenv("HOME"), ".config/yay") - } +func setPaths() error { + if _configHome, set := os.LookupEnv("XDG_CONFIG_HOME"); set { + cacheHome = filepath.Join(_configHome, "yay") + } else if _configHome, set := os.LookupEnv("HOME"); set { + cacheHome = filepath.Join(_configHome, ".config/yay") } else { - configHome = filepath.Join(os.Getenv("HOME"), ".config/yay") + fmt.Errorf("XDG_CONFIG_HOME and HOME unset") } - if cacheHome = os.Getenv("XDG_CACHE_HOME"); cacheHome != "" { - if info, err := os.Stat(cacheHome); err == nil && info.IsDir() { - cacheHome = filepath.Join(cacheHome, "yay") - } else { - cacheHome = filepath.Join(os.Getenv("HOME"), ".cache/yay") - } + if _cacheHome, set := os.LookupEnv("XDG_CACHE_HOME"); set { + cacheHome = filepath.Join(_cacheHome, "yay") + } else if _cacheHome, set := os.LookupEnv("HOME"); set { + cacheHome = filepath.Join(_cacheHome, ".cache/yay") } else { - cacheHome = filepath.Join(os.Getenv("HOME"), ".cache/yay") + fmt.Errorf("XDG_CACHE_HOME and HOME unset") } configFile = filepath.Join(configHome, configFileName) vcsFile = filepath.Join(cacheHome, vcsFileName) + + return nil } func initConfig() (err error) { @@ -184,7 +182,12 @@ func main() { goto cleanup } - initPaths() + err = setPaths() + if err != nil { + fmt.Println(err) + status = 1 + goto cleanup + } err = initConfig() if err != nil {