123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package db
- import (
- alpm "github.com/Jguer/go-alpm"
- )
- type AlpmExecutor struct {
- Handle *alpm.Handle
- LocalDB *alpm.DB
- SyncDB alpm.DBList
- }
- func NewExecutor(handle *alpm.Handle) (*AlpmExecutor, error) {
- localDB, err := handle.LocalDB()
- if err != nil {
- return nil, err
- }
- syncDB, err := handle.SyncDBs()
- if err != nil {
- return nil, err
- }
- return &AlpmExecutor{Handle: handle, LocalDB: localDB, SyncDB: syncDB}, nil
- }
- func (ae *AlpmExecutor) LocalSatisfierExists(pkgName string) bool {
- if _, err := ae.LocalDB.PkgCache().FindSatisfier(pkgName); err != nil {
- return false
- }
- return true
- }
- func (ae *AlpmExecutor) IsCorrectVersionInstalled(pkgName, versionRequired string) bool {
- alpmPackage := ae.LocalDB.Pkg(pkgName)
- if alpmPackage == nil {
- return false
- }
- return alpmPackage.Version() == versionRequired
- }
- func (ae *AlpmExecutor) SyncSatisfier(pkgName string) RepoPackage {
- foundPkg, err := ae.SyncDB.FindSatisfier(pkgName)
- if err != nil {
- return nil
- }
- return foundPkg
- }
- func (ae *AlpmExecutor) PackagesFromGroup(groupName string) []RepoPackage {
- groupPackages := []RepoPackage{}
- _ = ae.SyncDB.FindGroupPkgs(groupName).ForEach(func(pkg alpm.Package) error {
- groupPackages = append(groupPackages, &pkg)
- return nil
- })
- return groupPackages
- }
- func (ae *AlpmExecutor) LocalPackages() []RepoPackage {
- localPackages := []RepoPackage{}
- _ = ae.LocalDB.PkgCache().ForEach(func(pkg alpm.Package) error {
- localPackages = append(localPackages, RepoPackage(&pkg))
- return nil
- })
- return localPackages
- }
- func (ae *AlpmExecutor) PackageFromDB(pkgName, dbName string) RepoPackage {
- singleDB, err := ae.Handle.SyncDBByName(dbName)
- if err != nil {
- return nil
- }
- foundPkg, err := singleDB.PkgCache().FindSatisfier(pkgName)
- if err != nil {
- return nil
- }
- return foundPkg
- }
- func (ae *AlpmExecutor) PackageDepends(pkg RepoPackage) []alpm.Depend {
- alpmPackage := pkg.(*alpm.Package)
- return alpmPackage.Depends().Slice()
- }
- func (ae *AlpmExecutor) PackageProvides(pkg RepoPackage) []alpm.Depend {
- alpmPackage := pkg.(*alpm.Package)
- return alpmPackage.Provides().Slice()
- }
- func (ae *AlpmExecutor) PackageConflicts(pkg RepoPackage) []alpm.Depend {
- alpmPackage := pkg.(*alpm.Package)
- return alpmPackage.Conflicts().Slice()
- }
|