diff --git a/README.rst b/README.rst index 29b9c21..341c6d2 100644 --- a/README.rst +++ b/README.rst @@ -150,6 +150,13 @@ Check a mercurial (hg) repository on `Google Code `_ f gcode_hg The name used on Google Code, e.g. ``chromium-compact-language-detector``. +Check Google Code (svn repository) +--------------------------------- +Check a subversion (svn) repository on `Google Code `_ for updates. The version returned is the svn resivion number. + +gcode_svn + The name used on Google Code, e.g. ``cld2``. + Manually updating ----------------- This enables you to manually specify the version (maybe because you want to approve each release before it gets to the script). diff --git a/nvchecker/get_version.py b/nvchecker/get_version.py index 6bedf54..a57c4e5 100644 --- a/nvchecker/get_version.py +++ b/nvchecker/get_version.py @@ -4,7 +4,7 @@ from importlib import import_module logger = logging.getLogger(__name__) handler_precedence = ( 'github', 'aur', 'pypi', 'archpkg', 'gems', 'pacman', - 'cmd', 'gcode_hg', 'regex', 'manual', 'vcs' + 'cmd', 'gcode_hg', 'gcode_svn', 'regex', 'manual', 'vcs' ) def get_version(name, conf, callback): diff --git a/nvchecker/source/gcode_svn.py b/nvchecker/source/gcode_svn.py new file mode 100644 index 0000000..90c7010 --- /dev/null +++ b/nvchecker/source/gcode_svn.py @@ -0,0 +1,26 @@ +import re +import logging +from functools import partial + +from tornado.httpclient import AsyncHTTPClient + +logger = logging.getLogger(__name__) + +GCODE_URL = 'https://code.google.com/p/%s/source/list' +GCODE_SVN_RE = re.compile(r'r(\d+)') + +def get_version(name, conf, callback): + repo = conf.get('gcode_svn') or name + url = GCODE_URL % repo + AsyncHTTPClient().fetch(url, user_agent='lilydjwg/nvchecker', + callback=partial(_gcodehg_done, name, callback)) + +def _gcodehg_done(name, callback, res): + data = res.body.decode('utf-8') + m = GCODE_SVN_RE.search(data) + if m: + version = m.group(1) + else: + logger.error('%s: version not found.', name) + version = None + callback(name, version)