From 12a6d4f5c1edbfa086617fac78510e8ad880f5e2 Mon Sep 17 00:00:00 2001 From: jguer Date: Fri, 15 Oct 2021 19:22:28 +0200 Subject: [PATCH] fix(cache): create build directory if not systemd-run directory. closes #1612 --- pkg/settings/config.go | 14 +++++++++++++- pkg/settings/dirs.go | 25 +++++++++++++------------ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/pkg/settings/config.go b/pkg/settings/config.go index 39a541c3..64ef89f9 100644 --- a/pkg/settings/config.go +++ b/pkg/settings/config.go @@ -17,6 +17,7 @@ import ( "github.com/Jguer/yay/v11/pkg/settings/exe" "github.com/Jguer/yay/v11/pkg/settings/parser" + "github.com/Jguer/yay/v11/pkg/text" "github.com/Jguer/yay/v11/pkg/vcs" ) @@ -216,12 +217,23 @@ func DefaultConfig() *Configuration { func NewConfig(version string) (*Configuration, error) { newConfig := DefaultConfig() - cacheHome := getCacheHome() + cacheHome, errCache := getCacheHome() + if errCache != nil { + text.Errorln(errCache) + } + newConfig.BuildDir = cacheHome configPath := getConfigPath() newConfig.load(configPath) + if newConfig.BuildDir != systemdCache { + errBuildDir := initDir(newConfig.BuildDir) + if errBuildDir != nil { + return nil, errBuildDir + } + } + if aurdest := os.Getenv("AURDEST"); aurdest != "" { newConfig.BuildDir = aurdest } diff --git a/pkg/settings/dirs.go b/pkg/settings/dirs.go index 57775c9e..15c43810 100644 --- a/pkg/settings/dirs.go +++ b/pkg/settings/dirs.go @@ -5,13 +5,12 @@ import ( "path/filepath" ) -// configFileName holds the name of the config file. -const configFileName string = "config.json" - -// vcsFileName holds the name of the vcs file. -const vcsFileName string = "vcs.json" - -const completionFileName string = "completion.cache" +const ( + configFileName string = "config.json" // configFileName holds the name of the config file. + vcsFileName string = "vcs.json" // vcsFileName holds the name of the vcs file. + completionFileName string = "completion.cache" + systemdCache string = "/var/cache/yay" // systemd should handle cache creation +) func getConfigPath() string { if configHome := os.Getenv("XDG_CONFIG_HOME"); configHome != "" { @@ -31,28 +30,30 @@ func getConfigPath() string { return "" } -func getCacheHome() string { +func getCacheHome() (string, error) { uid := os.Geteuid() if cacheHome := os.Getenv("XDG_CACHE_HOME"); cacheHome != "" && uid != 0 { cacheDir := filepath.Join(cacheHome, "yay") if err := initDir(cacheDir); err == nil { - return cacheDir + return cacheDir, nil } } if cacheHome := os.Getenv("HOME"); cacheHome != "" && uid != 0 { cacheDir := filepath.Join(cacheHome, ".cache", "yay") if err := initDir(cacheDir); err == nil { - return cacheDir + return cacheDir, nil } } if uid == 0 && os.Getenv("SUDO_USER") == "" && os.Getenv("DOAS_USER") == "" { - return "/var/cache/yay" // Don't create directory if systemd-run takes care of it + return systemdCache, nil // Don't create directory if systemd-run takes care of it } - return os.TempDir() + tmpDir := filepath.Join(os.TempDir(), "yay") + + return tmpDir, initDir(tmpDir) } func initDir(dir string) error {