mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 15:27:17 +00:00
handle provides
list
This commit is contained in:
parent
b8036649ab
commit
b9b012be53
@ -65,8 +65,10 @@ class Application:
|
|||||||
"""
|
"""
|
||||||
known_packages: Set[str] = set()
|
known_packages: Set[str] = set()
|
||||||
# local set
|
# local set
|
||||||
for package in self.repository.packages():
|
for base in self.repository.packages():
|
||||||
known_packages.update(package.packages.keys())
|
for package, properties in base.packages.items():
|
||||||
|
known_packages.add(package)
|
||||||
|
known_packages.update(properties.provides)
|
||||||
known_packages.update(self.repository.pacman.all_packages())
|
known_packages.update(self.repository.pacman.all_packages())
|
||||||
return known_packages
|
return known_packages
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
from pyalpm import Handle # type: ignore
|
from pyalpm import Handle # type: ignore
|
||||||
from typing import List, Set
|
from typing import Set
|
||||||
|
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
|
|
||||||
@ -40,13 +40,15 @@ class Pacman:
|
|||||||
for repository in configuration.getlist("alpm", "repositories"):
|
for repository in configuration.getlist("alpm", "repositories"):
|
||||||
self.handle.register_syncdb(repository, 0) # 0 is pgp_level
|
self.handle.register_syncdb(repository, 0) # 0 is pgp_level
|
||||||
|
|
||||||
def all_packages(self) -> List[str]:
|
def all_packages(self) -> Set[str]:
|
||||||
"""
|
"""
|
||||||
get list of packages known for alpm
|
get list of packages known for alpm
|
||||||
:return: list of package names
|
:return: list of package names
|
||||||
"""
|
"""
|
||||||
result: Set[str] = set()
|
result: Set[str] = set()
|
||||||
for database in self.handle.get_syncdbs():
|
for database in self.handle.get_syncdbs():
|
||||||
result.update({package.name for package in database.pkgcache})
|
for package in database.pkgcache:
|
||||||
|
result.add(package.name) # package itself
|
||||||
|
result.update(package.provides) # provides list for meta-packages
|
||||||
|
|
||||||
return list(result)
|
return result
|
||||||
|
@ -38,6 +38,7 @@ class PackageDescription:
|
|||||||
:ivar groups: package groups
|
:ivar groups: package groups
|
||||||
:ivar installed_size: package installed size
|
:ivar installed_size: package installed size
|
||||||
:ivar licenses: package licenses list
|
:ivar licenses: package licenses list
|
||||||
|
:ivar provides: list of provided packages
|
||||||
:ivar url: package url
|
:ivar url: package url
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -50,6 +51,7 @@ class PackageDescription:
|
|||||||
groups: List[str] = field(default_factory=list)
|
groups: List[str] = field(default_factory=list)
|
||||||
installed_size: Optional[int] = None
|
installed_size: Optional[int] = None
|
||||||
licenses: List[str] = field(default_factory=list)
|
licenses: List[str] = field(default_factory=list)
|
||||||
|
provides: List[str] = field(default_factory=list)
|
||||||
url: Optional[str] = None
|
url: Optional[str] = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -89,4 +91,5 @@ class PackageDescription:
|
|||||||
groups=package.groups,
|
groups=package.groups,
|
||||||
installed_size=package.isize,
|
installed_size=package.isize,
|
||||||
licenses=package.licenses,
|
licenses=package.licenses,
|
||||||
|
provides=package.provides,
|
||||||
url=package.url)
|
url=package.url)
|
||||||
|
@ -8,3 +8,10 @@ def test_all_packages(pacman: Pacman) -> None:
|
|||||||
packages = pacman.all_packages()
|
packages = pacman.all_packages()
|
||||||
assert packages
|
assert packages
|
||||||
assert "pacman" in packages
|
assert "pacman" in packages
|
||||||
|
|
||||||
|
|
||||||
|
def test_all_packages_with_provides(pacman: Pacman) -> None:
|
||||||
|
"""
|
||||||
|
package list must contain provides packages
|
||||||
|
"""
|
||||||
|
assert 'sh' in pacman.all_packages()
|
||||||
|
@ -69,5 +69,6 @@ def pyalpm_package_description_ahriman(package_description_ahriman: PackageDescr
|
|||||||
type(mock).isize = PropertyMock(return_value=package_description_ahriman.installed_size)
|
type(mock).isize = PropertyMock(return_value=package_description_ahriman.installed_size)
|
||||||
type(mock).licenses = PropertyMock(return_value=package_description_ahriman.licenses)
|
type(mock).licenses = PropertyMock(return_value=package_description_ahriman.licenses)
|
||||||
type(mock).size = PropertyMock(return_value=package_description_ahriman.archive_size)
|
type(mock).size = PropertyMock(return_value=package_description_ahriman.archive_size)
|
||||||
|
type(mock).provides = PropertyMock(return_value=package_description_ahriman.provides)
|
||||||
type(mock).url = PropertyMock(return_value=package_description_ahriman.url)
|
type(mock).url = PropertyMock(return_value=package_description_ahriman.url)
|
||||||
return mock
|
return mock
|
||||||
|
Loading…
Reference in New Issue
Block a user