mirror of
https://github.com/lilydjwg/nvchecker.git
synced 2025-03-10 06:14:02 +00:00
Merge remote-tracking branch 'origin/pr/211'
This commit is contained in:
commit
f4e9ab80b9
3 changed files with 47 additions and 0 deletions
|
@ -587,6 +587,17 @@ Check `MetaCPAN <https://metacpan.org/>`_ for updates.
|
||||||
cpan
|
cpan
|
||||||
The name used on CPAN, e.g. ``YAML``.
|
The name used on CPAN, e.g. ``YAML``.
|
||||||
|
|
||||||
|
Check CRAN
|
||||||
|
~~~~~~~~~~
|
||||||
|
::
|
||||||
|
|
||||||
|
source = "cran"
|
||||||
|
|
||||||
|
Check `CRAN <https://cran.r-project.org/web/packages/>`_ for updates.
|
||||||
|
|
||||||
|
cran
|
||||||
|
The name used on CRAN, e.g. ``xml2``.
|
||||||
|
|
||||||
Check Packagist
|
Check Packagist
|
||||||
~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~
|
||||||
::
|
::
|
||||||
|
|
26
nvchecker_source/cran.py
Normal file
26
nvchecker_source/cran.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# MIT licensed
|
||||||
|
# Copyright (c) 2022 Pekka Ristola <pekkarr [at] protonmail [dot] com>, et al.
|
||||||
|
|
||||||
|
from nvchecker.api import session, GetVersionError
|
||||||
|
|
||||||
|
CRAN_URL = 'https://cran.r-project.org/package=%s/DESCRIPTION'
|
||||||
|
VERSION_FIELD = 'Version: '
|
||||||
|
|
||||||
|
async def request(pkg):
|
||||||
|
url = CRAN_URL % pkg
|
||||||
|
res = await session.get(url)
|
||||||
|
return res.body.decode('utf-8', errors='ignore')
|
||||||
|
|
||||||
|
async def get_version(name, conf, *, cache, **kwargs):
|
||||||
|
package = conf.get('cran', name)
|
||||||
|
|
||||||
|
desc = await cache.get(package, request)
|
||||||
|
|
||||||
|
for line in desc.splitlines():
|
||||||
|
if line.startswith(VERSION_FIELD):
|
||||||
|
version = line[len(VERSION_FIELD):]
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
raise GetVersionError('Invalid DESCRIPTION file')
|
||||||
|
|
||||||
|
return version
|
10
tests/test_cran.py
Normal file
10
tests/test_cran.py
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# MIT licensed
|
||||||
|
# Copyright (c) 2022 Pekka Ristola <pekkarr [at] protonmail [dot] com>, et al.
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
pytestmark = [pytest.mark.asyncio, pytest.mark.needs_net]
|
||||||
|
|
||||||
|
async def test_cran(get_version):
|
||||||
|
assert await get_version("xml2", {
|
||||||
|
"source": "cran",
|
||||||
|
}) == "1.3.3"
|
Loading…
Add table
Reference in a new issue