fix(cache): create build directory if not systemd-run directory. closes #1612

This commit is contained in:
jguer 2021-10-15 19:22:28 +02:00
parent 52efaeba52
commit 12a6d4f5c1
No known key found for this signature in database
GPG key ID: 6D6CC9BEA8556B35
2 changed files with 26 additions and 13 deletions

View file

@ -17,6 +17,7 @@ import (
"github.com/Jguer/yay/v11/pkg/settings/exe" "github.com/Jguer/yay/v11/pkg/settings/exe"
"github.com/Jguer/yay/v11/pkg/settings/parser" "github.com/Jguer/yay/v11/pkg/settings/parser"
"github.com/Jguer/yay/v11/pkg/text"
"github.com/Jguer/yay/v11/pkg/vcs" "github.com/Jguer/yay/v11/pkg/vcs"
) )
@ -216,12 +217,23 @@ func DefaultConfig() *Configuration {
func NewConfig(version string) (*Configuration, error) { func NewConfig(version string) (*Configuration, error) {
newConfig := DefaultConfig() newConfig := DefaultConfig()
cacheHome := getCacheHome() cacheHome, errCache := getCacheHome()
if errCache != nil {
text.Errorln(errCache)
}
newConfig.BuildDir = cacheHome newConfig.BuildDir = cacheHome
configPath := getConfigPath() configPath := getConfigPath()
newConfig.load(configPath) newConfig.load(configPath)
if newConfig.BuildDir != systemdCache {
errBuildDir := initDir(newConfig.BuildDir)
if errBuildDir != nil {
return nil, errBuildDir
}
}
if aurdest := os.Getenv("AURDEST"); aurdest != "" { if aurdest := os.Getenv("AURDEST"); aurdest != "" {
newConfig.BuildDir = aurdest newConfig.BuildDir = aurdest
} }

View file

@ -5,13 +5,12 @@ import (
"path/filepath" "path/filepath"
) )
// configFileName holds the name of the config file. const (
const configFileName string = "config.json" configFileName string = "config.json" // configFileName holds the name of the config file.
vcsFileName string = "vcs.json" // vcsFileName holds the name of the vcs file.
// vcsFileName holds the name of the vcs file. completionFileName string = "completion.cache"
const vcsFileName string = "vcs.json" systemdCache string = "/var/cache/yay" // systemd should handle cache creation
)
const completionFileName string = "completion.cache"
func getConfigPath() string { func getConfigPath() string {
if configHome := os.Getenv("XDG_CONFIG_HOME"); configHome != "" { if configHome := os.Getenv("XDG_CONFIG_HOME"); configHome != "" {
@ -31,28 +30,30 @@ func getConfigPath() string {
return "" return ""
} }
func getCacheHome() string { func getCacheHome() (string, error) {
uid := os.Geteuid() uid := os.Geteuid()
if cacheHome := os.Getenv("XDG_CACHE_HOME"); cacheHome != "" && uid != 0 { if cacheHome := os.Getenv("XDG_CACHE_HOME"); cacheHome != "" && uid != 0 {
cacheDir := filepath.Join(cacheHome, "yay") cacheDir := filepath.Join(cacheHome, "yay")
if err := initDir(cacheDir); err == nil { if err := initDir(cacheDir); err == nil {
return cacheDir return cacheDir, nil
} }
} }
if cacheHome := os.Getenv("HOME"); cacheHome != "" && uid != 0 { if cacheHome := os.Getenv("HOME"); cacheHome != "" && uid != 0 {
cacheDir := filepath.Join(cacheHome, ".cache", "yay") cacheDir := filepath.Join(cacheHome, ".cache", "yay")
if err := initDir(cacheDir); err == nil { if err := initDir(cacheDir); err == nil {
return cacheDir return cacheDir, nil
} }
} }
if uid == 0 && os.Getenv("SUDO_USER") == "" && os.Getenv("DOAS_USER") == "" { 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 { func initDir(dir string) error {