New version checker for software releases
Find a file
Chih-Hsuan Yen 166dfb11a4 Fix test_alpm in Arch chroots
Arch chroots with recent devtools has options=(debug) by default, and
thus test_alpm fails:

_________________________ ERROR at setup of test_alpm __________________________

module = <module 'tests.test_alpm' from '/build/nvchecker/src/nvchecker/tests/test_alpm.py'>

    def setup_module(module):
      global temp_dir, db_path
      temp_dir = tempfile.TemporaryDirectory()
      temp_path = pathlib.Path(temp_dir.name)
      pkg_path = temp_path / 'test-pkg'
      pkg_path.mkdir()
      with (pkg_path / 'PKGBUILD').open('w') as f:
        f.write(
          'pkgname=test-pkg\n'
          'pkgver=1.2.3\n'
          'pkgrel=4\n'
          'arch=(any)\n'
          'provides=("test-provides=5.6-7" "test-provides-unversioned")\n'
        )
      subprocess.check_call(['makepkg', '--nosign'], cwd=pkg_path)
      pkg_file = subprocess.check_output(['makepkg', '--packagelist'], cwd=pkg_path, text=True).strip()
      db_path = pkg_path / 'test-db'
      db_path.mkdir()
      repo_path = db_path / 'sync'
      repo_path.mkdir()
>     subprocess.check_call([
        'repo-add',
        repo_path / 'test-repo.db.tar.gz',
        pkg_path / pkg_file
      ])

tests/test_alpm.py:40:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

popenargs = (['repo-add', PosixPath('/tmp/tmp2kl26h_y/test-pkg/test-db/sync/test-repo.db.tar.gz'), PosixPath('/pkgdest/test-pkg-1.2.3-4-any.pkg.tar.zst\n/pkgdest/test-pkg-debug-1.2.3-4-any.pkg.tar.zst')],)
kwargs = {}, retcode = 1
cmd = ['repo-add', PosixPath('/tmp/tmp2kl26h_y/test-pkg/test-db/sync/test-repo.db.tar.gz'), PosixPath('/pkgdest/test-pkg-1.2.3-4-any.pkg.tar.zst\n/pkgdest/test-pkg-debug-1.2.3-4-any.pkg.tar.zst')]

    def check_call(*popenargs, **kwargs):
        """Run command with arguments.  Wait for command to complete.  If
        the exit code was zero then return, otherwise raise
        CalledProcessError.  The CalledProcessError object will have the
        return code in the returncode attribute.

        The arguments are the same as for the call function.  Example:

        check_call(["ls", "-l"])
        """
        retcode = call(*popenargs, **kwargs)
        if retcode:
            cmd = kwargs.get("args")
            if cmd is None:
                cmd = popenargs[0]
>           raise CalledProcessError(retcode, cmd)
E           subprocess.CalledProcessError: Command '['repo-add', PosixPath('/tmp/tmp2kl26h_y/test-pkg/test-db/sync/test-repo.db.tar.gz'), PosixPath('/pkgdest/test-pkg-1.2.3-4-any.pkg.tar.zst\n/pkgdest/test-pkg-debug-1.2.3-4-any.pkg.tar.zst')]' returned non-zero exit status 1.

/usr/lib/python3.10/subprocess.py:369: CalledProcessError
---------------------------- Captured stdout setup -----------------------------
==> Making package: test-pkg 1.2.3-4 (Fri Apr  7 11:53:43 2023)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
==> Extracting sources...
==> Entering fakeroot environment...
==> Tidying install...
  -> Removing libtool files...
  -> Purging unwanted files...
  -> Removing static library files...
  -> Stripping unneeded symbols from binaries and libraries...
  -> Compressing man and info pages...
==> Checking for packaging issues...
==> Creating package "test-pkg"...
  -> Generating .PKGINFO file...
  -> Generating .BUILDINFO file...
  -> Generating .MTREE file...
  -> Compressing package...
==> Leaving fakeroot environment.
==> Finished making: test-pkg 1.2.3-4 (Fri Apr  7 11:53:44 2023)
==> No packages modified, nothing to do.
---------------------------- Captured stderr setup -----------------------------
==> ERROR: File '/pkgdest/test-pkg-1.2.3-4-any.pkg.tar.zst
/pkgdest/test-pkg-debug-1.2.3-4-any.pkg.tar.zst' not found.
2023-04-07 20:38:17 +08:00
.github/workflows github actions: exclude matrix containing an upstream bug 2023-03-26 20:51:19 +08:00
docs port from deprecated appdirs to platformdirs 2023-02-01 17:15:15 +02:00
nvchecker bump version to 2.11 2023-04-06 21:00:56 +08:00
nvchecker_source regex source: cache by url and post_data 2023-03-26 17:30:08 +08:00
scripts nvchecker-notify: try Notify 0.8 2022-07-16 15:48:59 +08:00
tests Fix test_alpm in Arch chroots 2023-04-07 20:38:17 +08:00
.gitignore introduce tox support 2022-03-03 09:56:33 -08:00
.typos.toml fix typos 2022-04-21 17:16:34 +08:00
keyfile.toml.enc update keyfile.toml.enc 2021-07-27 16:06:39 +08:00
LICENSE add MIT LICENSE 2017-02-04 16:36:48 +08:00
mypy.ini port from deprecated appdirs to platformdirs 2023-02-01 17:15:15 +02:00
pyproject.toml add comment about how to build and upload 2022-11-20 13:50:32 +08:00
README.rst port from deprecated appdirs to platformdirs 2023-02-01 17:15:15 +02:00
sample_config.toml rename sample_source.toml to sample_config.toml 2020-10-02 12:35:37 +08:00
setup.cfg port from deprecated appdirs to platformdirs 2023-02-01 17:15:15 +02:00
tox.ini introduce tox support 2022-03-03 09:56:33 -08:00

**nvchecker** (short for *new version checker*) is for checking if a new version of some software has been released.

This is the version 2.0 branch. For the old version 1.x, please switch to the ``v1.x`` branch.

.. image:: https://github.com/lilydjwg/nvchecker/workflows/run%20tests/badge.svg?branch=master
   :alt: Test Status
   :target: https://github.com/lilydjwg/nvchecker/actions?query=workflow%3A%22run+tests%22
.. image:: https://badge.fury.io/py/nvchecker.svg
   :alt: PyPI version
   :target: https://badge.fury.io/py/nvchecker
.. image:: https://readthedocs.org/projects/nvchecker/badge/?version=latest
   :target: https://nvchecker.readthedocs.io/en/latest/?badge=latest
   :alt: Documentation Status

|

.. image:: https://repology.org/badge/vertical-allrepos/nvchecker.svg
   :alt: Packaging status
   :target: https://repology.org/metapackage/nvchecker/versions

.. contents::
   :local:

Dependency
----------
- Python 3.7+
- Python library: structlog, tomli, platformdirs
- One of these Python library combinations (ordered by preference):

  * tornado + pycurl
  * aiohttp
  * httpx with http2 support (experimental; only latest version is supported)
  * tornado

- All commands used in your software version configuration files

Install and Run
---------------
To install::

  pip3 install nvchecker

To use the latest code, you can also clone this repository and run::

  pip install .

To see available options::

  nvchecker --help

Run with one or more software version files::

  nvchecker -c config_file

You normally will like to specify some "version record files"; see below.

Documentation
-------------

For detailed documentation, see `https://nvchecker.readthedocs.io/en/latest/ <https://nvchecker.readthedocs.io/en/latest/>`_.