2021-10-16 08:07:39 +00:00
|
|
|
package query
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"strconv"
|
|
|
|
|
|
|
|
"github.com/Jguer/aur"
|
|
|
|
"github.com/Jguer/go-alpm/v2"
|
|
|
|
"github.com/leonelquinteros/gotext"
|
|
|
|
|
2023-03-07 21:04:06 +00:00
|
|
|
"github.com/Jguer/yay/v12/pkg/db"
|
|
|
|
"github.com/Jguer/yay/v12/pkg/text"
|
2021-10-16 08:07:39 +00:00
|
|
|
)
|
|
|
|
|
2023-05-24 08:22:18 +00:00
|
|
|
type Pkg = aur.Pkg
|
|
|
|
|
2021-10-16 08:07:39 +00:00
|
|
|
func getSearchBy(value string) aur.By {
|
|
|
|
switch value {
|
|
|
|
case "name":
|
|
|
|
return aur.Name
|
|
|
|
case "maintainer":
|
|
|
|
return aur.Maintainer
|
2022-12-30 19:02:32 +00:00
|
|
|
case "submitter":
|
|
|
|
return aur.Submitter
|
2021-10-16 08:07:39 +00:00
|
|
|
case "depends":
|
|
|
|
return aur.Depends
|
|
|
|
case "makedepends":
|
|
|
|
return aur.MakeDepends
|
|
|
|
case "optdepends":
|
|
|
|
return aur.OptDepends
|
|
|
|
case "checkdepends":
|
|
|
|
return aur.CheckDepends
|
2022-12-30 19:02:32 +00:00
|
|
|
case "provides":
|
|
|
|
return aur.Provides
|
|
|
|
case "conflicts":
|
|
|
|
return aur.Conflicts
|
|
|
|
case "replaces":
|
|
|
|
return aur.Replaces
|
|
|
|
case "groups":
|
|
|
|
return aur.Groups
|
|
|
|
case "keywords":
|
|
|
|
return aur.Keywords
|
|
|
|
case "comaintainers":
|
|
|
|
return aur.CoMaintainers
|
2021-10-16 08:07:39 +00:00
|
|
|
default:
|
|
|
|
return aur.NameDesc
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-03-06 23:48:15 +00:00
|
|
|
func aurPkgSearchString(
|
|
|
|
pkg *aur.Pkg,
|
|
|
|
dbExecutor db.Executor,
|
|
|
|
singleLineResults bool,
|
|
|
|
) string {
|
|
|
|
toPrint := text.Bold(text.ColorHash("aur")) + "/" + text.Bold(pkg.Name) +
|
|
|
|
" " + text.Cyan(pkg.Version) +
|
|
|
|
text.Bold(" (+"+strconv.Itoa(pkg.NumVotes)) +
|
|
|
|
" " + text.Bold(strconv.FormatFloat(pkg.Popularity, 'f', 2, 64)+") ")
|
|
|
|
|
|
|
|
if pkg.Maintainer == "" {
|
|
|
|
toPrint += text.Bold(text.Red(gotext.Get("(Orphaned)"))) + " "
|
|
|
|
}
|
2021-10-16 08:07:39 +00:00
|
|
|
|
2022-03-06 23:48:15 +00:00
|
|
|
if pkg.OutOfDate != 0 {
|
|
|
|
toPrint += text.Bold(text.Red(gotext.Get("(Out-of-date: %s)", text.FormatTime(pkg.OutOfDate)))) + " "
|
|
|
|
}
|
2021-10-16 08:07:39 +00:00
|
|
|
|
2022-03-06 23:48:15 +00:00
|
|
|
if localPkg := dbExecutor.LocalPackage(pkg.Name); localPkg != nil {
|
|
|
|
if localPkg.Version() != pkg.Version {
|
|
|
|
toPrint += text.Bold(text.Green(gotext.Get("(Installed: %s)", localPkg.Version())))
|
2021-11-01 15:41:07 +00:00
|
|
|
} else {
|
2022-03-06 23:48:15 +00:00
|
|
|
toPrint += text.Bold(text.Green(gotext.Get("(Installed)")))
|
2021-11-01 15:41:07 +00:00
|
|
|
}
|
2022-03-06 23:48:15 +00:00
|
|
|
}
|
2021-11-01 15:41:07 +00:00
|
|
|
|
2022-03-06 23:48:15 +00:00
|
|
|
if singleLineResults {
|
|
|
|
toPrint += "\t"
|
|
|
|
} else {
|
|
|
|
toPrint += "\n "
|
2021-10-16 08:07:39 +00:00
|
|
|
}
|
2022-03-06 23:48:15 +00:00
|
|
|
|
|
|
|
toPrint += pkg.Description
|
|
|
|
|
|
|
|
return toPrint
|
2021-10-16 08:07:39 +00:00
|
|
|
}
|
|
|
|
|
2022-03-06 23:48:15 +00:00
|
|
|
// PrintSearch receives a RepoSearch type and outputs pretty text.
|
|
|
|
func syncPkgSearchString(pkg alpm.IPackage, dbExecutor db.Executor, singleLineResults bool) string {
|
|
|
|
toPrint := text.Bold(text.ColorHash(pkg.DB().Name())) + "/" + text.Bold(pkg.Name()) +
|
|
|
|
" " + text.Cyan(pkg.Version()) +
|
|
|
|
text.Bold(" ("+text.Human(pkg.Size())+
|
|
|
|
" "+text.Human(pkg.ISize())+") ")
|
|
|
|
|
|
|
|
packageGroups := dbExecutor.PackageGroups(pkg)
|
|
|
|
if len(packageGroups) != 0 {
|
|
|
|
toPrint += fmt.Sprint(packageGroups, " ")
|
|
|
|
}
|
2021-10-16 08:07:39 +00:00
|
|
|
|
2022-03-06 23:48:15 +00:00
|
|
|
if localPkg := dbExecutor.LocalPackage(pkg.Name()); localPkg != nil {
|
|
|
|
if localPkg.Version() != pkg.Version() {
|
|
|
|
toPrint += text.Bold(text.Green(gotext.Get("(Installed: %s)", localPkg.Version())))
|
2021-11-01 15:41:07 +00:00
|
|
|
} else {
|
2022-03-06 23:48:15 +00:00
|
|
|
toPrint += text.Bold(text.Green(gotext.Get("(Installed)")))
|
2021-11-01 15:41:07 +00:00
|
|
|
}
|
2022-03-06 23:48:15 +00:00
|
|
|
}
|
2021-11-01 15:41:07 +00:00
|
|
|
|
2022-03-06 23:48:15 +00:00
|
|
|
if singleLineResults {
|
|
|
|
toPrint += "\t"
|
|
|
|
} else {
|
|
|
|
toPrint += "\n "
|
2021-10-16 08:07:39 +00:00
|
|
|
}
|
2022-03-06 23:48:15 +00:00
|
|
|
|
|
|
|
toPrint += pkg.Description()
|
|
|
|
|
|
|
|
return toPrint
|
2021-10-16 08:07:39 +00:00
|
|
|
}
|