Added support for XDG_CACHE_HOME, fixes relating to file location not covered in the commit relating to #50.

This commit is contained in:
Jguer committed 2017-10-18 11:12:16 +09:00
1 parent 893196bd82
commit b016bf6d53
5 files changed
+102 -56

No files matched your search

+6 -2
View File
@@ -35,11 +35,15 @@ Yay was created with a few objectives in mind and based on the design of [yaourt
### Changelog
#### 2.196
- XDG_CONFIG_HOME support
- XDG_CACHE_HOME support
#### 2.165
- Upgrade list now allows skipping upgrade install.
- Upgrade list now allows skipping upgrade install
#### 2.159
- Qstats now warns about packages not available in AUR.
- Qstats now warns about packages not available in AUR
#### 2.152
- Fetching backend changed to Mikkel Oscar's [Aur](https://github.com/mikkeloscar/aur)
+63 -38
View File
@@ -40,41 +40,86 @@ func usage() {
}
func init() {
defaultSettings(&config)
var configHome string // configHome handles config directory home
var cacheHome string // cacheHome handles cache home
var err error
if dir := os.Getenv("XDG_CONFIG_HOME"); dir != "" {
if info, err := os.Stat(dir); err == nil && info.IsDir() == true {
configfile = os.Getenv("XDG_CONFIG_HOME") + "/yay/config.json"
} else {
configfile = os.Getenv("HOME") + "/.config/yay/config.json"
}
} else {
configfile = os.Getenv("HOME") + "/.config/yay/config.json"
if 0 == os.Geteuid() {
fmt.Println("Please avoid running yay as root/sudo.")
}
if _, err = os.Stat(configfile); os.IsNotExist(err) {
err = os.MkdirAll(filepath.Dir(configfile), 0755)
if configHome = os.Getenv("XDG_CONFIG_HOME"); configHome != "" {
if info, err := os.Stat(configHome); err == nil && info.IsDir() == true {
configHome = configHome + "/yay"
} else {
configHome = os.Getenv("HOME") + "/.config/yay"
}
} else {
configHome = os.Getenv("HOME") + "/.config/yay"
}
if cacheHome = os.Getenv("XDG_CACHE_HOME"); cacheHome != "" {
if info, err := os.Stat(cacheHome); err == nil && info.IsDir() == true {
cacheHome = cacheHome + "/yay"
} else {
cacheHome = os.Getenv("HOME") + "/.cache/yay"
}
} else {
cacheHome = os.Getenv("HOME") + "/.config/yay"
}
configFile = configHome + "/config.json"
vcsFile = configHome + "/yay_vcs.json"
completionFile = cacheHome + "/aur_"
////////////////
// yay config //
////////////////
defaultSettings(&config)
if _, err = os.Stat(configFile); os.IsNotExist(err) {
err = os.MkdirAll(filepath.Dir(configFile), 0700)
if err != nil {
fmt.Println("Unable to create config directory:", filepath.Dir(configfile), err)
fmt.Println("Unable to create config directory:", filepath.Dir(configFile), err)
os.Exit(2)
}
// Save the default config if nothing is found
config.saveConfig()
} else {
file, err := os.Open(configfile)
file, err := os.OpenFile(configFile, os.O_RDWR|os.O_CREATE, 0600)
if err != nil {
fmt.Println("Error reading config:", err)
} else {
defer file.Close()
decoder := json.NewDecoder(file)
err = decoder.Decode(&config)
if err != nil {
fmt.Println("Loading default Settings\nError reading config:", err)
fmt.Println("Loading default Settings.\nError reading config:", err)
defaultSettings(&config)
}
}
}
/////////////////
// vcs config //
////////////////
updated = false
file, err := os.OpenFile(vcsFile, os.O_RDWR|os.O_CREATE, 0600)
if err != nil {
fmt.Println("error:", err)
return
}
defer file.Close()
decoder := json.NewDecoder(file)
err = decoder.Decode(&savedInfo)
if err != nil {
fmt.Println("error:", err)
}
/////////////////
// alpm config //
/////////////////
AlpmConf, err = readAlpmConfig(config.PacmanConf)
if err != nil {
fmt.Println("Unable to read Pacman conf", err)
@@ -86,25 +131,6 @@ func init() {
fmt.Println("Unable to CreateHandle", err)
os.Exit(1)
}
updated = false
configfile = os.Getenv("HOME") + "/.config/yay/yay_vcs.json"
if _, err := os.Stat(configfile); os.IsNotExist(err) {
_ = os.MkdirAll(os.Getenv("HOME")+"/.config/yay", 0755)
return
}
file, err := os.Open(configfile)
if err != nil {
fmt.Println("error:", err)
return
}
decoder := json.NewDecoder(file)
err = decoder.Decode(&savedInfo)
if err != nil {
fmt.Println("error:", err)
}
}
func parser() (op string, options []string, packages []string, changedConfig bool, err error) {
@@ -339,11 +365,10 @@ func numberMenu(pkgS []string, flags []string) (err error) {
// Complete provides completion info for shells
func complete() (err error) {
path := os.Getenv("HOME") + "/.cache/yay/aur_" + config.Shell + ".cache"
path := completionFile + config.Shell + ".cache"
if info, err := os.Stat(path); os.IsNotExist(err) || time.Since(info.ModTime()).Hours() > 48 {
os.MkdirAll(os.Getenv("HOME")+"/.cache/yay/", 0755)
os.MkdirAll(filepath.Dir(completionFile), 0700)
out, err := os.Create(path)
if err != nil {
return err
@@ -358,7 +383,7 @@ func complete() (err error) {
return err
}
in, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0755)
in, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0600)
if err != nil {
return err
}
+9 -2
View File
@@ -50,7 +50,14 @@ var specialDBsauce = false
var savedInfo infos
var configfile string
// configfile holds yay config file path.
var configFile string
// vcsfile holds yay vcs info file path.
var vcsFile string
//completion file
var completionFile string
// Updated returns if database has been updated
var updated bool
@@ -80,7 +87,7 @@ func readAlpmConfig(pacmanconf string) (conf alpm.PacmanConfig, err error) {
func (config *Configuration) saveConfig() error {
config.NoConfirm = false
marshalledinfo, _ := json.MarshalIndent(config, "", "\t")
in, err := os.OpenFile(configfile, os.O_RDWR|os.O_CREATE, 0644)
in, err := os.OpenFile(configFile, os.O_RDWR|os.O_CREATE, 0644)
if err != nil {
return err
}
+23
View File
@@ -141,6 +141,25 @@ loop:
return
}
// checkUpdates returns list of outdated packages
func checkUpdates(remoteNames []string) (toUpdate []string) {
for _, e := range savedInfo {
if e.needsUpdate() {
if _, ok := foreign[e.Package]; ok {
toUpdate = append(toUpdate, e.Package)
} else {
removeVCSPackage([]string{e.Package})
}
}
}
return
}
func checkIgnored(name string) {
for
}
// upAUR gathers foreign packages and checks if they have new versions.
// Output: Upgrade type package list.
func upAUR(remote []alpm.Package, remoteNames []string) (toUpgrade upSlice, err error) {
@@ -151,6 +170,10 @@ func upAUR(remote []alpm.Package, remoteNames []string) (toUpgrade upSlice, err
packageC := make(chan upgrade)
done := make(chan bool)
if config.Devel {
}
for i := len(remote); i != 0; i = j {
//Split requests so AUR RPC doesn't get mad at us.
j = i - config.RequestSplitN
+1 -14
View File
@@ -90,19 +90,6 @@ func (info *Info) needsUpdate() bool {
return false
}
// checkUpdates returns list of outdated packages
func checkUpdates(foreign map[string]alpm.Package) (toUpdate []string) {
for _, e := range savedInfo {
if e.needsUpdate() {
if _, ok := foreign[e.Package]; ok {
toUpdate = append(toUpdate, e.Package)
} else {
removeVCSPackage([]string{e.Package})
}
}
}
return
}
func inStore(pkgName string) *Info {
for i, e := range savedInfo {
@@ -148,7 +135,7 @@ func saveVCSInfo() error {
if err != nil || string(marshalledinfo) == "null" {
return err
}
in, err := os.OpenFile(configfile, os.O_RDWR|os.O_CREATE, 0755)
in, err := os.OpenFile(vcsFile, os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
return err
}