New version checker for software releases
Find a file
guihkx 8546f6abd2
Use shutil.move() instead of os.rename()
Because os.rename() fails when renaming files across different
filesystems.

This issue can be easily triggered if we mount the "newver" file as a
volume in Docker, and then run nvchecker.

For example:

$ docker run -v ./source.toml:/source.toml \
             -v ./old.json:/old.json \
             -v ./new.json:/new.json \
             localhost/nvchecker -c /source.toml
[I 04-23 13:47:18.537 core:408] mysource: updated from 1.0.0 to 1.0.1 taskName=Task-2
Traceback (most recent call last):
  File "/usr/bin/nvchecker", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/lib/python3.12/site-packages/nvchecker/__main__.py", line 96, in main
    core.write_verfile(newverf, vers)
  File "/lib/python3.12/site-packages/nvchecker/core.py", line 167, in write_verfile
    safe_overwrite(file, data)
  File "/lib/python3.12/site-packages/nvchecker/core.py", line 128, in safe_overwrite
    os.rename(tmpname, resolved_path)
OSError: [Errno 16] Resource busy: '/new.json.tmp' -> '/new.json'
2024-04-23 04:54:52 -03:00
.github/workflows feat: add jq source (#261) 2024-03-31 16:10:09 +08:00
docs feat: add jq source (#261) 2024-03-31 16:10:09 +08:00
nvchecker Use shutil.move() instead of os.rename() 2024-04-23 04:54:52 -03:00
nvchecker_source feat: add jq source (#261) 2024-03-31 16:10:09 +08:00
scripts nvchecker-notify: accept and pass --tries and --failures to nvchecker 2023-10-03 17:28:34 +02:00
tests fix: correct try/except statement 2024-04-18 04:20:00 +00:00
.gitignore introduce tox support 2022-03-03 09:56:33 -08:00
.readthedocs.yaml fix readthedocs 2023-08-26 11:47:34 +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 feat: add jq source (#261) 2024-03-31 16:10:09 +08:00
pyproject.toml PyPI signature support is gone 2023-06-17 22:27:21 +08:00
README.rst drop support for Python 3.7 2023-12-09 20:38:23 +08:00
sample_config.toml rename sample_source.toml to sample_config.toml 2020-10-02 12:35:37 +08:00
setup.cfg feat: add jq source (#261) 2024-03-31 16:10:09 +08:00
tox.ini drop support for Python 3.7 2023-12-09 20:38:23 +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.8+
- Python library: structlog, platformdirs, tomli (on Python < 3.11)
- 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/>`_.