Home

Awesome

<div align='center'>

nvrs

🚦 fast new version checker for software releases πŸ¦€

Grind Compliant<br> Build Status docs.rs<br> GitHub Contributors GitHub Repo Size Repo Created At

banner

</div>

Features

nvchecker compatibility

check the release notes and configuration docs for compatibility updates and instructions.

Speed

<img align='right' src='https://media1.tenor.com/m/mMWXOkCEndoAAAAC/ka-chow-lightning-mcqueen.gif' alt='ka-chow' width=80 height=45>
commandtime per updated packagedetails
nvrs~ 0.03sAPI requests included<br>depends on internet speed
nvrs --cmp~ 0.0008sdepends on disk speed
nvrs --take~ 0.001sdepends on disk speed

Sources

QOL improvements

Installation

<a href="https://repology.org/project/nvrs/versions"><img align="right" src="https://repology.org/badge/vertical-allrepos/nvrs.svg" alt="Packaging status"></a>

<details> <summary>Arch Linux</summary>

nvrs is available as a package in the AUR.<br> you can install it with your preferred AUR helper, example:

paru -S nvrs

or manually:

git clone https://aur.archlinux.org/nvrs.git
cd nvrs
makepkg -si
</details> <details> <summary>Cargo</summary>

nvrs can be installed via Cargo with:

cargo install nvrs --all-features

note that crates installed using cargo install require manual updating with cargo install --force.

</details> <details> <summary>Manual</summary>
  1. download the latest binary from GitHub's release page
  2. allow execution
chmod +x nvrs
  1. move the file to a directory in $PATH (using /usr/bin as an example)
sudo mv nvrs /usr/bin/nvrs
</details>

Usage

nvrs relies on a configuration file. see configuration.

<img align='center' src='https://vhs.charm.sh/vhs-7j0ZLSJUnq5W8xwqjK14W4.gif' alt='Packaging status'>

the core commands are:

Example usage

# download the example configuration file
curl -L 'https://github.com/adamperkowski/nvrs/raw/main/nvrs.toml' -o nvrs.toml

# fetch latest package versions (should return `NONE -> version` for all packages)
nvrs --no-fail

# compare them to latest known versions (should also return `NONE -> version`)
nvrs -c

# update the known versions
nvrs -t ALL

for all available commands, options and flags, see nvrs --help and the manual page.

Configuration

nvrs relies on a configuration file (example) containing basic settings, such as oldver, newver & keyfile paths, as well as package entries. supported config paths:

__config__ table

this configures the behavior of nvrs. see the example config.

available fields:

namedescriptiontyperequired
oldverpath to the oldver filestringβœ”οΈ
newverpath to the newver filestringβœ”οΈ
keyfilepath to a keyfile (see keyfile structure)string❌

Package entries

example

package entries are custom entries in the main config file. they contain values such as:

namedescriptiontyperequiredcustom
sourcesee sourcesstringβœ”οΈβŒ
source namethe "target". eg. repo path for githubstringβœ”οΈβœ”οΈ
hostdomain name the source is hosted onstring❌❌
prefixthe prefix used in releases / tags<br>example: v for tags like v0.1.0string❌❌
use_max_taguse max git tag instead of the latest releasebool❌❌
urlurl to check for source type regexstring❌❌
regexregex to search url for source type regexbool❌❌

Keyfile structure

this file contains API keys for various sources. example can be found here.

[keys]
github = "your_secret_github_api_key_that_you_shouldnt_push_to_a_public_nor_a_private_remote_repo_because_there_will_definitely_be_serious_consequences_sooner_or_later_if_you_do_trust_me_just_dont"
gitlab = "remember_to_replace_the_example_values_here_here_with_your_actual_keys_otherwise_it_wont_work_but_dont_push_keyfiles_to_remote_repos"

<sub align='center'>"<i>I think that example value is not long enough</i>" - orhun</sub>

Documentation

the nvrs library documentation can be found at docs.rs/nvrs

Contributing

if you want to contribute to the project, please read the Contributing Guidelines before doing so.

if you find any parts of the code or the documentation unclear, or have any suggestions, feel free to open an issue or a pull request.

Credits

<div align='center'>

<sub align='center'>Copyright (c) 2024 Adam Perkowski<br>see LICENSE</sub>

</div>