alpm: make `repo` option optional

This commit is contained in:
lilydjwg 2021-07-25 19:38:26 +08:00
parent 11aea624e6
commit 494c4ddf67
2 changed files with 16 additions and 6 deletions

View File

@ -814,10 +814,10 @@ alpm
Name of the package. Name of the package.
repo repo
Name of the package repository in which the package resides. Name of the package repository in which the package resides. If not provided, nvchecker will search ``core``, ``extra``, ``community`` and ``multilib``, in that order.
dbpath dbpath
Path to the ALPM database directory. Default: ``/var/lib/pacman``. Path to the ALPM database directory. Default: ``/var/lib/pacman``. You need to update the database yourself.
strip_release strip_release
Strip the release part, only return the part before ``-``. Strip the release part, only return the part before ``-``.

View File

@ -1,5 +1,5 @@
# MIT licensed # MIT licensed
# Copyright (c) 2020 DDoSolitary <DDoSolitary@gmail.com>, et al. # Copyright (c) 2020-2021 DDoSolitary <DDoSolitary@gmail.com>, et al.
from nvchecker.api import GetVersionError from nvchecker.api import GetVersionError
from pyalpm import Handle from pyalpm import Handle
@ -15,11 +15,21 @@ async def open_db(info):
async def get_version(name, conf, *, cache, **kwargs): async def get_version(name, conf, *, cache, **kwargs):
pkgname = conf.get('alpm', name) pkgname = conf.get('alpm', name)
dbpath = conf.get('dbpath', '/var/lib/pacman') dbpath = conf.get('dbpath', '/var/lib/pacman')
repo = conf['repo']
strip_release = conf.get('strip_release', False) strip_release = conf.get('strip_release', False)
provided = conf.get('provided') provided = conf.get('provided')
db = (await cache.get((dbpath, repo), open_db))[1]
pkg = db.get_pkg(pkgname) repo = conf.get('repo')
if repo is None:
repos = ['core', 'extra', 'community', 'multilib']
else:
repos = [repo]
for repo in repos:
db = (await cache.get((dbpath, repo), open_db))[1]
pkg = db.get_pkg(pkgname)
if pkg is not None:
break
if pkg is None: if pkg is None:
raise GetVersionError('package not found in the ALPM database') raise GetVersionError('package not found in the ALPM database')
if provided is None: if provided is None: