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)