123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package settings
- import (
- "os"
- "path/filepath"
- )
- 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 != "" {
- configDir := filepath.Join(configHome, "yay")
- if err := initDir(configDir); err == nil {
- return filepath.Join(configDir, configFileName)
- }
- }
- if configHome := os.Getenv("HOME"); configHome != "" {
- configDir := filepath.Join(configHome, ".config", "yay")
- if err := initDir(configDir); err == nil {
- return filepath.Join(configDir, configFileName)
- }
- }
- return ""
- }
- 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, nil
- }
- }
- if cacheHome := os.Getenv("HOME"); cacheHome != "" && uid != 0 {
- cacheDir := filepath.Join(cacheHome, ".cache", "yay")
- if err := initDir(cacheDir); err == nil {
- return cacheDir, nil
- }
- }
- if uid == 0 && os.Getenv("SUDO_USER") == "" && os.Getenv("DOAS_USER") == "" {
- return systemdCache, nil // Don't create directory if systemd-run takes care of it
- }
- tmpDir := filepath.Join(os.TempDir(), "yay")
- return tmpDir, initDir(tmpDir)
- }
- func initDir(dir string) error {
- if _, err := os.Stat(dir); os.IsNotExist(err) {
- if err = os.MkdirAll(dir, 0o755); err != nil {
- return &ErrRuntimeDir{inner: err, dir: dir}
- }
- } else if err != nil {
- return err
- }
- return nil
- }
|