1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package query
- import "github.com/Jguer/go-alpm"
- // FilterPackages filters packages based on source and type from local repository.
- func FilterPackages(alpmHandle *alpm.Handle) (
- local, remote []alpm.Package,
- localNames, remoteNames []string,
- err error) {
- localDB, err := alpmHandle.LocalDB()
- if err != nil {
- return
- }
- dbList, err := alpmHandle.SyncDBs()
- if err != nil {
- return
- }
- f := func(k alpm.Package) error {
- found := false
- // For each DB search for our secret package.
- _ = dbList.ForEach(func(d alpm.DB) error {
- if found {
- return nil
- }
- if d.Pkg(k.Name()) != nil {
- found = true
- local = append(local, k)
- localNames = append(localNames, k.Name())
- }
- return nil
- })
- if !found {
- remote = append(remote, k)
- remoteNames = append(remoteNames, k.Name())
- }
- return nil
- }
- err = localDB.PkgCache().ForEach(f)
- return local, remote, localNames, remoteNames, err
- }
|