Load all AUR packages of a database with one call
Use a single RPC call to load all AUR packages for a database. Additionally use verson 5 since all previous versions have been deprecated.
This commit is contained in:
parent
e2008e8700
commit
50e01eaabd
2 changed files with 117 additions and 47 deletions
37
aur-check.py
37
aur-check.py
|
|
@ -7,7 +7,7 @@ import os
|
|||
import pyalpm
|
||||
|
||||
from arch import ArchDatabase, ArchPackage
|
||||
from aur import AURPackage
|
||||
from aur import AURPackage, AURLoader
|
||||
|
||||
|
||||
|
||||
|
|
@ -49,21 +49,32 @@ class AURChecker:
|
|||
def check_database(database):
|
||||
"""Check a database/repository."""
|
||||
print(Styling.BOLD + "# repository {}".format(database.get_name()) + Styling.ENDC)
|
||||
|
||||
# Load AUR data
|
||||
aur_data = AURLoader.load_package_data([p.get_name() for p in database.get_packages()])
|
||||
|
||||
# Convert AUR data to AUR packages
|
||||
aur_packages = {}
|
||||
for values in aur_data:
|
||||
aur_package = AURChecker.create_aur_package(values)
|
||||
aur_packages[aur_package.get_name()] = aur_package
|
||||
|
||||
# Compare database packages with AUR packages
|
||||
for package in database.get_packages():
|
||||
aur_package = AURPackage(package.get_name())
|
||||
if aur_package.exists():
|
||||
aur_package = aur_packages[package.get_name()]
|
||||
if aur_package:
|
||||
status = AURChecker.compare(package, aur_package)
|
||||
else:
|
||||
status = AURChecker.STATUS_DELETED
|
||||
|
||||
status_messages = {}
|
||||
status_messages[AURChecker.STATUS_UPTODATE] = Styling.UPTODATE + "up-do-date" + Styling.ENDC
|
||||
status_messages[AURChecker.STATUS_NEEDS_UPDATE] = Styling.NEEDS_UPDATE + "needs update to {}\n".format(aur_package.get_version()) + Styling.URL + " {}{}".format(AURPackage.AUR_URL, aur_package.get_url_path()) + Styling.ENDC
|
||||
status_messages[AURChecker.STATUS_NEEDS_UPDATE] = Styling.NEEDS_UPDATE + "needs update to {}\n".format(aur_package.get_version()) + Styling.URL + " {}{}".format(AURLoader.AUR_URL, aur_package.get_url_path()) + Styling.ENDC
|
||||
status_messages[AURChecker.STATUS_NEEDS_DOWNGRADE] = Styling.NEEDS_DOWNGRADE + "local is newer" + Styling.ENDC
|
||||
status_messages[AURChecker.STATUS_DELETED] = Styling.DELETED + "deleted" + Styling.ENDC
|
||||
|
||||
message = " – {} {}: {}".format(package.get_name(), package.get_version(), status_messages[status])
|
||||
if aur_package.get_out_of_date():
|
||||
if aur_package and aur_package.get_out_of_date():
|
||||
message = Styling.FLAGGED + "{} (flagged)".format(message) + Styling.ENDC
|
||||
print(message)
|
||||
|
||||
|
|
@ -79,6 +90,22 @@ class AURChecker:
|
|||
return AURChecker.STATUS_UPTODATE
|
||||
|
||||
|
||||
def create_aur_package(values):
|
||||
aur_package = AURPackage(values['Name'])
|
||||
aur_package.set_version(values['Version'])
|
||||
aur_package.set_desc(values['Description'])
|
||||
aur_package.set_url(values['URL'])
|
||||
aur_package.set_license(values['License'])
|
||||
aur_package.set_maintainer(values['Maintainer'])
|
||||
aur_package.set_votes(values['NumVotes'])
|
||||
aur_package.set_url_path(values['URLPath'])
|
||||
aur_package.set_package_base(values['PackageBase'])
|
||||
aur_package.set_out_of_date(values['OutOfDate'])
|
||||
aur_package.set_last_modified(values['LastModified'])
|
||||
|
||||
return aur_package
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue