mirror of
https://github.com/Jguer/yay
synced 2024-07-09 12:56:32 +00:00
Changed upgrade logic to use alpm.pkg
This commit is contained in:
parent
a20646fa24
commit
1a58017817
17
aur/aur.go
17
aur/aur.go
|
@ -90,11 +90,10 @@ func Install(pkgName []string, flags []string) (err error) {
|
||||||
func Upgrade(flags []string) error {
|
func Upgrade(flags []string) error {
|
||||||
fmt.Println("\x1b[1;36;1m::\x1b[0m\x1b[1m Starting AUR upgrade...\x1b[0m")
|
fmt.Println("\x1b[1;36;1m::\x1b[0m\x1b[1m Starting AUR upgrade...\x1b[0m")
|
||||||
|
|
||||||
foreign, n, err := pacman.ForeignPackages()
|
foreign, err := pacman.ForeignPackages()
|
||||||
if err != nil || n == 0 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
keys := make([]string, len(foreign))
|
keys := make([]string, len(foreign))
|
||||||
i := 0
|
i := 0
|
||||||
for k := range foreign {
|
for k := range foreign {
|
||||||
|
@ -108,12 +107,14 @@ func Upgrade(flags []string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
outdated := q[:0]
|
outdated := q[:0]
|
||||||
for _, res := range q {
|
for i, res := range q {
|
||||||
|
fmt.Printf("\r Checking %d/%d packages...", i+1, len(q))
|
||||||
|
|
||||||
if _, ok := foreign[res.Name]; ok {
|
if _, ok := foreign[res.Name]; ok {
|
||||||
// Leaving this here for now, warn about downgrades later
|
// Leaving this here for now, warn about downgrades later
|
||||||
if res.LastModified > int(foreign[res.Name].Date) {
|
if int64(res.LastModified) > foreign[res.Name].BuildDate().UnixNano() {
|
||||||
fmt.Printf("\x1b[1m\x1b[32m==>\x1b[33;1m %s: \x1b[0m%s \x1b[33;1m-> \x1b[0m%s\n",
|
fmt.Printf("\x1b[1m\x1b[32m==>\x1b[33;1m %s: \x1b[0m%s \x1b[33;1m-> \x1b[0m%s\n",
|
||||||
res.Name, foreign[res.Name].Version, res.Version)
|
res.Name, foreign[res.Name].Version(), res.Version)
|
||||||
outdated = append(outdated, res)
|
outdated = append(outdated, res)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,12 +122,12 @@ func Upgrade(flags []string) error {
|
||||||
|
|
||||||
//If there are no outdated packages, don't prompt
|
//If there are no outdated packages, don't prompt
|
||||||
if len(outdated) == 0 {
|
if len(outdated) == 0 {
|
||||||
fmt.Println(" there is nothing to do")
|
fmt.Println("\n there is nothing to do")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install updated packages
|
// Install updated packages
|
||||||
if !config.ContinueTask("Proceed with upgrade?", "nN") {
|
if !config.ContinueTask("\nProceed with upgrade?", "nN") {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,11 +23,9 @@ func Search(pkgInputN []string) (s Query, n int, err error) {
|
||||||
initL := func(len int) int {
|
initL := func(len int) int {
|
||||||
return len - 1
|
return len - 1
|
||||||
}
|
}
|
||||||
|
|
||||||
compL := func(len int, i int) bool {
|
compL := func(len int, i int) bool {
|
||||||
return i > -1
|
return i > -1
|
||||||
}
|
}
|
||||||
|
|
||||||
finalL := func(i int) int {
|
finalL := func(i int) int {
|
||||||
return i - 1
|
return i - 1
|
||||||
}
|
}
|
||||||
|
@ -37,11 +35,9 @@ func Search(pkgInputN []string) (s Query, n int, err error) {
|
||||||
initL = func(len int) int {
|
initL = func(len int) int {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
compL = func(len int, i int) bool {
|
compL = func(len int, i int) bool {
|
||||||
return i < len
|
return i < len
|
||||||
}
|
}
|
||||||
|
|
||||||
finalL = func(i int) int {
|
finalL = func(i int) int {
|
||||||
return i + 1
|
return i + 1
|
||||||
}
|
}
|
||||||
|
@ -202,6 +198,14 @@ func DepSatisfier(toCheck []string) (repo []string, notFound []string, err error
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PkgNameSlice returns a slice of package names
|
||||||
|
// func (s Query) PkgNameSlice() (pkgNames []string) {
|
||||||
|
// for _, e := range s {
|
||||||
|
// pkgNames = append(pkgNames, e.Name())
|
||||||
|
// }
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
|
||||||
// CleanRemove sends a full removal command to pacman with the pkgName slice
|
// CleanRemove sends a full removal command to pacman with the pkgName slice
|
||||||
func CleanRemove(pkgName []string) (err error) {
|
func CleanRemove(pkgName []string) (err error) {
|
||||||
if len(pkgName) == 0 {
|
if len(pkgName) == 0 {
|
||||||
|
@ -213,11 +217,7 @@ func CleanRemove(pkgName []string) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ForeignPackages returns a map of foreign packages, with their version and date as values.
|
// ForeignPackages returns a map of foreign packages, with their version and date as values.
|
||||||
func ForeignPackages() (foreign map[string]*struct {
|
func ForeignPackages() (foreign map[string]alpm.Package, err error) {
|
||||||
Version string
|
|
||||||
Date int64
|
|
||||||
}, n int, err error) {
|
|
||||||
|
|
||||||
localDb, err := config.AlpmHandle.LocalDb()
|
localDb, err := config.AlpmHandle.LocalDb()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
@ -227,31 +227,28 @@ func ForeignPackages() (foreign map[string]*struct {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
foreign = make(map[string]*struct {
|
foreign = make(map[string]alpm.Package)
|
||||||
Version string
|
|
||||||
Date int64
|
f := func(k alpm.Package) error {
|
||||||
})
|
|
||||||
// Find foreign packages in system
|
|
||||||
for _, pkg := range localDb.PkgCache().Slice() {
|
|
||||||
// Change to more effective method
|
|
||||||
found := false
|
found := false
|
||||||
for _, db := range dbList.Slice() {
|
dbList.ForEach(func(d alpm.Db) error {
|
||||||
_, err = db.PkgByName(pkg.Name())
|
if found {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
_, err = d.PkgByName(k.Name())
|
||||||
if err == nil {
|
if err == nil {
|
||||||
found = true
|
found = true
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
if !found {
|
if !found {
|
||||||
foreign[pkg.Name()] = &struct {
|
foreign[k.Name()] = k
|
||||||
Version string
|
|
||||||
Date int64
|
|
||||||
}{pkg.Version(), pkg.InstallDate().Unix()}
|
|
||||||
n++
|
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = localDb.PkgCache().ForEach(f)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
7
query.go
7
query.go
|
@ -96,12 +96,15 @@ func localStatistics(version string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
foreignS, foreign, _ := pac.ForeignPackages()
|
foreignS, err := pac.ForeignPackages()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
fmt.Printf("\n Yay version r%s\n", version)
|
fmt.Printf("\n Yay version r%s\n", version)
|
||||||
fmt.Println("\x1B[1;34m===========================================\x1B[0m")
|
fmt.Println("\x1B[1;34m===========================================\x1B[0m")
|
||||||
fmt.Printf("\x1B[1;32mTotal installed packages: \x1B[0;33m%d\x1B[0m\n", info.Totaln)
|
fmt.Printf("\x1B[1;32mTotal installed packages: \x1B[0;33m%d\x1B[0m\n", info.Totaln)
|
||||||
fmt.Printf("\x1B[1;32mTotal foreign installed packages: \x1B[0;33m%d\x1B[0m\n", foreign)
|
fmt.Printf("\x1B[1;32mTotal foreign installed packages: \x1B[0;33m%d\x1B[0m\n", len(foreignS))
|
||||||
fmt.Printf("\x1B[1;32mExplicitly installed packages: \x1B[0;33m%d\x1B[0m\n", info.Expln)
|
fmt.Printf("\x1B[1;32mExplicitly installed packages: \x1B[0;33m%d\x1B[0m\n", info.Expln)
|
||||||
fmt.Printf("\x1B[1;32mTotal Size occupied by packages: \x1B[0;33m%s\x1B[0m\n", size(info.TotalSize))
|
fmt.Printf("\x1B[1;32mTotal Size occupied by packages: \x1B[0;33m%s\x1B[0m\n", size(info.TotalSize))
|
||||||
fmt.Println("\x1B[1;34m===========================================\x1B[0m")
|
fmt.Println("\x1B[1;34m===========================================\x1B[0m")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user