From 3dce06ca2173636f1051903ba815687d7fd3114f Mon Sep 17 00:00:00 2001 From: lilydjwg Date: Tue, 25 Aug 2015 00:18:19 +0800 Subject: [PATCH] add strip-release config, closing #11 --- README.rst | 9 +++++++++ nvchecker/source/archpkg.py | 8 ++++++-- nvchecker/source/aur.py | 8 ++++++-- nvchecker/source/pacman.py | 9 ++++++++- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/README.rst b/README.rst index c31c8a9..d2063f8 100644 --- a/README.rst +++ b/README.rst @@ -108,6 +108,9 @@ Check `Arch User Repository `_ for updates. aur The package name in AUR. If empty, use the name of software (the *section name*). +strip-release + Strip the release part. + Check GitHub ------------ Check `GitHub `_ for updates. The version returned is in date format ``%Y%m%d``, e.g. ``20130701``. @@ -163,6 +166,9 @@ This is used when you run ``nvchecker`` on an Arch Linux system and the program pacman The package name to reference to. +strip-release + Strip the release part. + Check Arch Linux official packages ---------------------------------- This enables you to track the update of `Arch Linux official packages `_, without needing of pacman and an updated local Pacman databases. @@ -170,6 +176,9 @@ This enables you to track the update of `Arch Linux official packages `_ for updates. The version returned is in date format ``%Y%m%d``, e.g. ``20130701``. diff --git a/nvchecker/source/archpkg.py b/nvchecker/source/archpkg.py index 9cb4a6c..bbffb20 100644 --- a/nvchecker/source/archpkg.py +++ b/nvchecker/source/archpkg.py @@ -7,10 +7,12 @@ URL = 'https://www.archlinux.org/packages/search/json/?name=' def get_version(name, conf, callback): pkg = conf['archpkg'] + strip_release = conf.getboolean('strip-release', False) url = URL + pkg - AsyncHTTPClient().fetch(url, partial(_pkg_done, name, callback)) + AsyncHTTPClient().fetch( + url, partial(_pkg_done, name, strip_release, callback)) -def _pkg_done(name, callback, res): +def _pkg_done(name, strip_release, callback, res): if res.error: raise res.error @@ -22,4 +24,6 @@ def _pkg_done(name, callback, res): return version = [r['pkgver'] for r in data['results'] if r['repo'] != 'testing'][0] + if strip_release and '-' in version: + version = version.rsplit('-', 1)[0] callback(name, version) diff --git a/nvchecker/source/aur.py b/nvchecker/source/aur.py index 1b4401b..34448d6 100644 --- a/nvchecker/source/aur.py +++ b/nvchecker/source/aur.py @@ -11,10 +11,12 @@ logger = logging.getLogger(__name__) def get_version(name, conf, callback): aurname = conf.get('aur') or name + strip_release = conf.getboolean('strip-release', False) url = AUR_URL + url_escape(aurname) - AsyncHTTPClient().fetch(url, partial(_aur_done, name, callback)) + AsyncHTTPClient().fetch( + url, partial(_aur_done, name, strip_release, callback)) -def _aur_done(name, callback, res): +def _aur_done(name, strip_release, callback, res): if res.error: raise res.error @@ -26,4 +28,6 @@ def _aur_done(name, callback, res): return version = data['results']['Version'] + if strip_release and '-' in version: + version = version.rsplit('-', 1)[0] callback(name, version) diff --git a/nvchecker/source/pacman.py b/nvchecker/source/pacman.py index dc4557c..b9c43b3 100644 --- a/nvchecker/source/pacman.py +++ b/nvchecker/source/pacman.py @@ -4,4 +4,11 @@ def get_version(name, conf, callback): referree = conf['pacman'] c = "LANG=C pacman -Si %s | grep -F Version | awk '{print $3}'" % referree conf['cmd'] = c - cmd.get_version(name, conf, callback) + + def callback_wrapper(name, version): + strip_release = conf.getboolean('strip-release', False) + if strip_release and '-' in version: + version = version.rsplit('-', 1)[0] + callback(name, version) + + cmd.get_version(name, conf, callback_wrapper)