Repo Search added to cut on memory use

This commit is contained in:
Jguer 2016-10-11 00:02:43 +01:00
parent db13e47f09
commit f51b897e3e
2 changed files with 44 additions and 7 deletions

View file

@ -29,8 +29,7 @@ func searchAndInstall(pkgName string, conf *alpm.PacmanConfig, flags []string) (
r.PrintSearch(0)
a.PrintSearch(len(r.Results))
args = append(args, "pacman")
args = append(args, "-S")
args = append(args, "pacman", "-S")
fmt.Printf("\x1B[32m%s\033[0m\nNumbers:", "Type numbers to install. Separate each number with a space.")
reader := bufio.NewReader(os.Stdin)
@ -95,12 +94,8 @@ func searchMode(pkg string, conf *alpm.PacmanConfig) (err error) {
if err != nil {
return err
}
r, err := SearchPackages(pkg, conf)
if err != nil {
return err
}
r.PrintSearch(SearchMode)
SearchRepos(pkg, conf, SearchMode)
a.PrintSearch(SearchMode)
return nil

View file

@ -105,6 +105,48 @@ func UpdatePackages(flags []string) error {
return err
}
// SearchRepos searches and prints packages in repo
func SearchRepos(pkgName string, conf *alpm.PacmanConfig, mode int) (err error) {
h, err := conf.CreateHandle()
defer h.Release()
if err != nil {
}
dbList, err := h.SyncDbs()
localdb, err := h.LocalDb()
var installed bool
var i int
for _, db := range dbList.Slice() {
for _, pkg := range db.PkgCache().Slice() {
if strings.Contains(pkg.Name(), pkgName) {
if r, _ := localdb.PkgByName(pkg.Name()); r != nil {
installed = true
} else {
installed = false
}
switch {
case mode != SearchMode && installed == true:
fmt.Printf("%d \033[1m%s/\x1B[33m%s \x1B[36m%s \x1B[32;40mInstalled\033[0m\n%s\n",
i, db.Name(), pkg.Name(), pkg.Version(), pkg.Description())
case mode != SearchMode && installed != true:
fmt.Printf("%d \033[1m%s/\x1B[33m%s \x1B[36m%s\033[0m\n%s\n",
i, db.Name(), pkg.Name(), pkg.Version(), pkg.Description())
case mode == SearchMode && installed == true:
fmt.Printf("\033[1m%s/\x1B[33m%s \x1B[36m%s \x1B[32;40mInstalled\033[0m\n%s\n",
db.Name(), pkg.Name(), pkg.Version(), pkg.Description())
case mode == SearchMode && installed != true:
fmt.Printf("\033[1m%s/\x1B[33m%s \x1B[36m%s\033[0m\n%s\n",
db.Name(), pkg.Name(), pkg.Version(), pkg.Description())
}
i++
}
}
}
return
}
// SearchPackages handles repo searches. Creates a RepoSearch struct.
func SearchPackages(pkgName string, conf *alpm.PacmanConfig) (s RepoSearch, err error) {
h, err := conf.CreateHandle()